PDA

Просмотр полной версии : как подружить Flex и JS ?


asuri
24.10.2006, 18:59
Добрый день. Не подскажет ли, кто-нибудь, как можно организовать вызов из флекса js функций c параметрами и наоборот передача этими функциями, после их выполнения, данных во Flex ?? Или дайте ссылку на источник,где об этом можно почитать. Заранее благодарен.

etc
24.10.2006, 19:01
flash.external.ExternalInterface

asuri
25.10.2006, 19:54
Делаю так.
пишу в html файлике функцию:
<script>
function summa(a,b){
alert(a+'+'+b);
s=a+b;
return s;
}
</script>

В MXML файлике пишу следующее:


<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
import flash.external.ExternalInterface;

private function summa():void {
var s:Number=0;
var a:Number=Number(num1.text)
var b:Number=Number(num2.text)

flash.external.ExternalInterface.call("jsvar.SetVariable('s','summa("+a+","+b+")')");
sum.text=s.toString();

}

]]>
</mx:Script>
<mx:Panel x="147" y="147" width="190" height="320" layout="absolute" >
<mx:TextInput x="35" y="33" width="100" id="num1"/>
<mx:TextInput x="35" y="77" width="100" id="num2"/>
<mx:TextInput x="35" y="121" width="100" id="sum"/>
<mx:Button x="43" y="172" label="Посчитать" click="summa();"/>
</mx:Panel>
</mx:Application>


В результате js функция даже не вызывается. При этом если заменить строку:
flash.external.ExternalInterface.call("jsvar.SetVariable('s','summa("+a+","+b+")')");

на:
flash.external.ExternalInterface.call("summa("+a+","+b+")");

то JS функция вызывается, параметры a и b в неё передаются, но не понятно как в этом случае вернуть результат выполнения этой ф-ции...
Подскажите где у меня трабла, плиз.

etc
25.10.2006, 20:01
s = ExternalInterface.call('summa',a,b);
Работает?

В хелпе куча примеров.
http://livedocs.macromedia.com/flex/2/docs/00001009.html

asuri
25.10.2006, 20:13
Да так работает. Большое спасибо.