flash AS与JavaScript交互实例程序

作者:袖梨 2022-06-28

ActionScript调用javaScript

需要引入flash.external.ExternalInterface,这里要用到ExternalInterface类的call方法:

ExternalInterface.call(functionName:String,…arguments):*,fuctionName:

要调用的Javascript函数名,arguments:参数,可选。

调用由 Flash Player 容器公开的函数,传递零个或多个参数。如果所需的函数不可用,则调用返回 null;否则,它返回由该函数提供的值。不允许使用递归;递归调用会生成 null 响应。

如果容器是 HTML 页,则此方法在


 


      type="application/x-shockwave-flash" width="300" height="80">
  

 

  
  
 



 

 

function jsMethod(arg) {
 alert("as 调用 js 成功,参数为:" + arg);
 return ("as 调用 js 成功!");
}

function callAs() {
 var myFlexfun = document.getElementById("asFunction");
 var result = myFlexfun.callAs(jsInput.value);
 alert("返回值:" + result);
}

 

package
{
 import flash.display.Sprite;
 import flash.events.MouseEvent;
 import flash.external.ExternalInterface;
 public class Interactive extends Sprite
 {
  public function Interactive()
  {
   init();
  }
  private function init():void
  {
   // 将方法 asMethod 注册为可从容器调用
   ExternalInterface.addCallback("callAs",asMethod);
   button.addEventListener(MouseEvent.CLICK,buttonClick);
  }
  private function buttonClick(event:MouseEvent):void
  {
   trace(textInput.text);
   label.text = "as 调用 js ...";
   var result:String = callJS(textInput.text);
   label.text = "返回值:" + result;
  }
  // ActionScript 调用 JavaScript;
  private function callJS(arg:String):String
  {
   // 调用指定的 JavaScript 端的函数,并顺序指定传递给 JavaScript 端函数的参数
   return ExternalInterface.call("jsMethod",arg);
  }
  // JavaScript 调用 ActionScript 时,ActionScript 端的函数;
  private function asMethod(arg:String):String
  {
   label.text = arg;
   return "js 调用了 as 成功!";
  }
 }
}

相关文章

精彩推荐