js调用as3

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

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

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

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

演示地址

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

posted @ 2012-07-05 01:54  FancyBit  阅读(635)  评论(0编辑  收藏  举报