PDA

Просмотр полной версии : JS - AS(Flash):где кроется ошибка?


Prometei1599
12.07.2011, 16:57
Добрый день друзья!
Помогите решить проблему:
JavaScript код:

<script>
function activateFlash(){
var flash = window.flashMovie || document.flashMovie;
flash.setVariable("val", 11);
}
</script>

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="200" height="200" id="flashMovie" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="allowFullScreen" value="false" />
<param name="movie" value="Untitled-3.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /> <embed src="Untitled-3.swf" quality="high" bgcolor="#ffffff" width="200" height="200" name="Untitled-3" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" />
</object>


ActionScript код:
_root.val = 10;//добавляю переменную в объект _root
_root.watch("val", setVal);
var setVal:Function = function():Void{
tf.text = val;//в текстовом поле выводится измененная величина
}

но почему-то никаких действий не происходит... watch не срабатывает на смену значения val ни внутри AS ни в JS!
На что я не обратил внимание?!

Заранее спасибо!

silin
12.07.2011, 17:21
может быть
var setVal:Function = function(prop, prev, curr){
trace( "setVal > prop : " + prop + ", prev : " + prev + ", curr : " + curr );
tf.text = curr;//в текстовом поле выводится измененная величина
return curr;
}

Prometei1599
12.07.2011, 20:14
watch заработал! Существенно, если определение функции будет стоять перед использованием watch. Не так как в JS=)
_root.val = 10;
var setVal:Function = function():Void{
trace("function called!");
tf.text = val;
}
_root.watch("val", setVal);
_root.val = 12;

silin
12.07.2011, 20:19
>> может мой пример не совсем корректный
ага, совсем не корректный
var tf=_root.createTextField("tf",0,0,0,200,200);
var setVal:Function = function(prop, prev, curr){
trace( "setVal > prop : " + prop + ", prev : " + prev + ", curr : " + curr );
tf.text = curr;//в текстовом поле выводится измененная величина
return curr;
}
_root.val = 10;
_root.watch("val", setVal);
_root.val = 12;