actionscript与javascript交互
即时获得麻球游戏开发的最新消息,关注游戏开发者热门讨论,请各位开发者申请加入麻球官方群:121304476
也可以follow catfly围脖:t.sina.com.cn/iscat

通过本文可以了解,flash是如何通过ExternalInterface对象来访问js中的内容,无论是执行js中的方法还是给js传递参数都可以通过ExternalInterface很方便的实现。
而js要访问flash中的内容,则需要先取得页面中的flash对象,可以使用下文提到的getSwfObj方法。

演示demo:

as 与 js 交互

本例,需要用到两个js类库:jquery.jsswfobject.js,请先在页头引用这两个js文件


<script type="text/javascript" src="js/swfobject.js"></script>
<script type="text/javascript" src="js/jquery.js"></script>

js通过如下方法获得flash对象


function getSwfObj(swfID) {
        var swfObj;
        if (navigator.appName.indexOf("Microsoft") > -1) {
                swfObj = window[swfID];
        } else {
                swfObj = document[swfID];
        }
        return swfObj;
}

那么id=”swf1″的flash对象就是getSwfobj(swfid)

需要在页面flash内容加载到后再获取flash对象,所以我们用到jquery中的方法$(document).ready


var swfObjArr = new Array({},{});
var swfIdArr = new Array("swf1","swf2");
$(document).ready(
        function(){
               for(var i=0;i<swfObjArr.length;i++){
               swfObjArr[i] = getSwfObj(swfIdArr[i]);
               }
        }
);

flash与js的交互:
通过ExternalInterface.call方法来访问js中的函数,与传递参数给js。
ExternalInterface.call(“js函数名”,参数)

通过ExternalInterface.addCallback方法接收js的访问,与接收js传递过来的参数。
ExternalInterface.addCallback(“as函数名”, as方法);

js代码中访问flash的函数为:swfobj.javascriptToSay(say)
swfobj : 访问哪个flash对象(适用页面中有多个flash)
javascriptToSay : 访问flash中的函数名
say : 向flash传递的参数


function jsToSay(swfobj,say){
        swfobj.javascriptToSay(say);
}

js代码中被flash访问的函数为:function actionscriptToSay(say)
actionscriptToSay:被flash访问的函数
say:接收flash的参数


function actionscriptToSay(say){
        alert(say);
}

示例原文件下载

猫抓鱼

3 Responses to “actionscript与javascript交互”

  1. qnest 说:

    怎么有from表单的时候就回报错?  [引用]

Leave a Reply