PDA

Просмотр полной версии : Аналог watch в AS3


Kadgar
08.10.2007, 15:25
У меня есть на бекграунде картинка. Мне нужно чтобы была возможность из JavaScript динамически менять мой бекграунд. Для этого я в AS2 делал так:


var backImage :String;

var watcher:Function = function(prop, oldVal, newVal)
{
return reloadImg(newVal); //функция загрузки моей картинки
}
watch("backImage", watcher);


Подскажите плз, как мне это сделать в AS3? Может есть какие-то ивенты?

etc
08.10.2007, 15:44
Kadgar, отредактируйте свой пост и оформите код тегами .

flash33
08.10.2007, 16:06
Используйте ExternalInterface:
function callMe(name:String):String
{
return "busy signal";
}
ExternalInterface.addCallback("myFunction", callMe);
где myFunction-объявление функции в JS, callMe - реальная ф-ция в AS3
из JS вызываем:
<script language="JavaScript">
// callResult gets the value "busy signal"
var callResult = flashObject.myFunction("my name");
</script>

Kadgar
08.10.2007, 20:04
Спасибо, flash33, но есть одна проблема...
Я использую SWFObject.
Вот мой код:


<script type="text/javascript">
var so = new SWFObject("map.swf","myMap","720","320","9","#336699");
so.addParam("MENU", 'false');
so.write("flashcontent");

// подгружаю бекграунд
myMap.setBackground('123.gif');
</script>


Так вот в момент когда я вызываю функцию setBackground, может возникнуть ситуация, когда ролик еще не успел подгрузиться, тогда бекграунд не меняется.
Раньше я решал эту проблему с помощью функции addVariable :

<script type="text/javascript">
var so = new SWFObject("map.swf","myMap","720","320","9","#336699");
so.addParam("MENU", 'false');
so.addVariable('backImage', '123.gif');
so.write("flashcontent");
</script>


А в AS3 когда я делаю addVariable, то ничего не происходит.

etc
08.10.2007, 20:20
См. loaderInfo.parameters.

Kadgar
08.10.2007, 20:30
__etc, спасибо, теперь все работает)