转载:在JavaScript中调用Flex方法

æç« æ¥æºï¼http://www.cnblogs.com/liuzhong/archive/2011/06/27/2091294.html
ä¸ãå¨JavaScript中è°ç¨Flexæ¹æ³
å¨Flex中å¯ä»¥ç¨ExternalInterfaceæ¥è°ç¨Flexçæ¹æ³ï¼éå¾æ¯
1.éè¿å¨Flexåºç¨å¯è°ç¨æ¹æ³å表中添å æå®çå¬ç¨æ¹æ³ã å¨Flexåºç¨ä¸­éè¿è°ç¨addCallback()å¯ä»¥æä¸ä¸ªæ¹æ³æ·»å å°æ­¤å表中ãaddCallbackå°ä¸ä¸ªActionScriptçæ¹æ³æ³¨å为ä¸ä¸ªJavaScriptåVBScriptå¯ä»¥è°ç¨çæ¹æ³ã
addCallback()å½æ°çå®ä¹å¦ä¸ï¼
addCallback(function_name:String, closure:Function):void
function_nameåæ°å°±æ¯å¨Html页é¢ä¸­èæ¬è°ç¨çæ¹æ³åãclosureåæ°æ¯è¦è°ç¨çæ¬å°æ¹æ³ï¼è¿ä¸ªåæ°å¯ä»¥æ¯ä¸ä¸ªæ¹æ³ä¹å¯ä»¥æ¯å¯¹è±¡å®ä¾ã

举个ä¾å­ï¼
<mx:Script>
    import flash.external.*;
    public function myFunc():Number {
        return 42;
    }
    public function initApp():void {
        ExternalInterface.addCallback("myFlexFunction",myFunc);
    }
</mx:Script>

2.é£ä¹å¨Html页é¢ä¸­ï¼åè·å¾SWF对象çå¼ç¨ï¼ä¹å°±æ¯ç¨<object .../>声æçSwfçIdå±æ§  ï¼æ¯å¦è¯´æ¯MyFlexAppãç¶åå°±å¯ä»¥ç¨ä»¥ä¸æ¹å¼è°ç¨Flex中çæ¹æ³ã
<SCRIPT language='JavaScript' charset='utf-8'>
    function callApp() {
        var x = MyFlexApp.myFlexFunction(); 
        alert(x);
    }
</SCRIPT>
<button οnclick="callApp()">Call App</button>



äºãå¨Flex中è°ç¨ JavaScript
ä½ å¯ä»¥è°ç¨Html页é¢ä¸­çJavaScriptï¼éè¿ä¸JavaScriptç交äºï¼å¯ä»¥æ¹åStyleï¼è°ç¨è¿ç¨æ¹æ³ãè¿å¯ä»¥å°æ°æ®ä¼ éç»Html页é¢ï¼å¤çååè¿åç»Flexï¼å®æè¿æ ·çåè½ä¸»è¦æ两ç§æ¹æ³ï¼ExternalInterface()ånavigateToUrl()ã
å¨Flex中è°ç¨JavaScriptæç®åçæ¹æ³æ¯ä½¿ç¨ExternalInterface()ï¼å¯ä»¥ä½¿ç¨æ­¤APIè°ç¨ä»»æJavaScriptï¼ä¼ éåæ°ï¼è·å¾è¿åå¼ï¼å¦æè°ç¨å¤±è´¥ï¼Flexæåºä¸ä¸ªå¼å¸¸ã
ExternalInterfaceå°è£äºå¯¹æµè§å¨æ¯æçæ£æ¥ï¼å¯ä»¥ç¨availableå±æ§æ¥æ¥çã
ExternalInterfaceç使ç¨é常ç®åï¼è¯­æ³å¦ä¸ï¼
flash.external.ExternalInterface.call(function_name: String[, arg1, ...]):Object;
åæ°function_nameæ¯è¦è°ç¨çJavaScriptçå½æ°åï¼åé¢çåæ°æ¯JavaScriptéè¦çåæ°ã
举个ä¾å­è¯´æå¦ä½è°ç¨JavaScriptå½æ°
Flexåºç¨ä¸­ï¼æ·»å å¦ä¸æ¹æ³ï¼
<mx:Script>
<?xml version="1.0" encoding="iso-8859-1"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
    <mx:Script>
        import flash.external.*;
    
        public function callWrapper():void {
            var f:String = "changeDocumentTitle";
            var m:String = ExternalInterface.call(f,"New Title");
            trace(m); 
        }
    </mx:Script>
    <mx:Button label="Change Document Title" click="callWrapper()"/>
</mx:Application>
Html页é¢ä¸­æå¦ä¸å½æ°å®ä¹ï¼
<SCRIPT LANGUAGE="JavaScript">
    function changeDocumentTitle(a) {
        window.document.title=a;
        return "successful";
    }
</SCRIPT>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值