Просмотр полной версии : loadVariables не подгружает перменные
Есть проигрыватель видео.
Ему я отдаю ид ролика который надо проиграть (clipid)
clipid = 416;
loadVariables("http://1nsk.ru/lib/id2path.php?id="+clipid, _root);
trace(_root.prw);
вышекузанный РНР скрипт отдает ролику
src - адрес ролика
prw - адресь картинки-превью
но вот трейс выдает undefined.
возможно скрипт продорлжпет работу не дожидаясь пока данные загрузятся.
как лечить такой трабл?
PS: Я вообще правильно понял что выдрать первый кадр с flv средствами флеша никак?
Потому что флеш асинхронен и загрузка на момент трейса ещё не произошла. К тому же, loadVariables — анахронизм древнейший. Используйте LoadVars.
Выдрать первый кадр из flv можно, только для этого потребуется третья версия ActionScript.
Tardos Mors
08.08.2007, 12:08
var clipid = 416;
var lv = new LoadVars();
lv.onLoad = function (success)
{
if (success == true)
{
// Это выполнится в случае удачной загрузки
trace ("src = " + this.src);
trace ("prw= " + this.prw);
}
else
{
// А это в случае ошибки
trace ("Error");
}
}
lv.load("http://1nsk.ru/lib/id2path.php?id="+_root.clipid);
Tardos Mors, в чем тайный смысл выражения if (success == true)?
спасибо большое. я уже сделал он ентерфрейм и проверку подгрузилась ли перменная :)
но так канечно лучше.
Tardos Mors
08.08.2007, 13:06
__etc, если загрузка не удалась (например файл не существует), то переменная success будет равна false. Можно например вывести сообщение об ошибке на сервере, ну или что угодно.
Нет, я не об этом. Зачем её сравнивать с true? Почему нельзя написать if (success)?
Tardos Mors
08.08.2007, 13:24
А я всегда так делаю. Вместо if (booleanVar) и if (!booleanVar) пишу if (booleanVar == true) и if (booleanVar == false). На мой взгляд такой код лучше читается.
Не лучше. Не факт, что параметр будет передан. И он может быть и undefined и null.
Tardos Mors
08.08.2007, 13:30
Почему? Куда (в данном случае) переменная success может деться?
В силу динамичности переменных, сравнивать, например, if (myVariable == false) не стоит.
Куда деться? Ну мало-ли, кто-нибудь случайно вызовет метод onLoad без параметров. В данном случае некритично, но в целом, масло масляное.
Tardos Mors
08.08.2007, 13:52
В данном случае нужно писать success == true. Вот почему:
var lv = new LoadVars();
lv.onLoad = function (success)
{
if (success == true)
{
// Это выполнится в случае удачной загрузки
trace ("src = " + this.src + ", prw = " + this.prw);
}
else
{
// А это в случае ошибки
trace ("Error");
}
}
// Это выведет "Error"
lv.onLoad("text");
var lv = new LoadVars();
lv.onLoad = function (success)
{
if (success)
{
// Это выполнится в случае удачной загрузки
trace ("src = " + this.src + ", prw = " + this.prw);
}
else
{
// А это в случае ошибки
trace ("Error");
}
}
// Это выведет "src = undefined, prw = undefined". Т.е. выполнятся все действия, которые должны были выполниться в случае удачной загрузки. Хотя никакой загрузки не произошло.
lv.onLoad("text");
Безусловно. Но в целом это ненужно.
вообще не ясно. В первом примере вызовите
lv.onLoad(true);
И получите свои "src = undefined, prw = undefined".
а во втором lv.onLoad(false); и выдаст желаемую ошибку.
Tardos Mors
08.08.2007, 16:20
В таком случае остается надеяться только на отсутствие программиста-маньяка, который вызовет onLoad.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.