最近做项目正好用到js跟as的通信,从网上搜的示例拿过来改改就用,做起来很是头痛,闲下来结合cookbook的章节整理了一个出来。
首先,要用到as3中的externalInterface类,它不仅封装了运行时与js通信所需的所有功能,而且还包含了从js中调用as函数所需的功能。
                        ExternalInterface.addCallback("function1",callback1);
这样就接受到了js发送过来的function1请求,并执行as3中的callback1函数
as3 code:
  •                 private function callback1():void{
  •                         var left:Number=Math.random()*stage.width;
  •                         var top:Number=Math.random()*stage.height;
  •                         ball=new Sprite();
  •                         ball.graphics.beginFill(Math.random() * 0xffffff + 0xff000000);
  •                         ball.graphics.drawCircle(left,top,10);
  •                         ball.graphics.endFill();
  •                         addChild(ball);
  •                 }
  • 复制代码

    个人感觉最难得是js部分
    简单来说就是获取页面上的flash然后向其发送请求
    第一步判断浏览器
  •          function invokeFlash(name){
  •                  var swf=name;
  •                  var container;
  •                  if(navigator.appName.indexOf("microsoft")!=-1){
  •                          container=window;
  •                  }else{
  •                          container=document;
  •                  }
  •                  return container[swf];
  •          }
  • 复制代码

    第二步 发送请求:invokeFlash('asTojs').function3()
    当然最先的是将flash插入,我试过最简单的用html代码插入可是无法用js发送请求,最后用了网上的一种办法用js插入:
  •                 var so = new SWFObject("asTojs.swf", "asTojs", "500", "375", "9", "#000");
  •                 so.addParam("quality" , "high");
  •                 so.addParam("allowScriptAccess" , "sameDomain");
  •                 so.write("icenter");
  • 复制代码

    这样还得导入一个js库:swfobject.js
    这样js就能很好的调用as了,希望达人多指正,还有没有什么好办法。

    演示地址

    原文地址:http://bbs.blueidea.com/forum.php?mod=viewthread&tid=2965471 
     

    相关文章: