需要这个包
import flash.external.ExternalInterface;

这是一个静态类,主要用两个方法:

  1. ExternalInterface.addCallback(给Javascript的接口,AS函数位置,AS函数名)
  2. ExternalInterface.call(Javascript函数名,传值)
复制代码
AS给做一个接口,然后Flash就可以访问AS的接口,从而可以调用AS的函数

ExternalInterface.addCallback("browse",this,upBrowse);
其中borwse是javascript可以调用flash 的接口,upBrowse是AS的函数

ExternalInterface.call("upAllComplete",upCount);
这个是AS调用Javascript的接口
其中upAllComplete是Javascript的函数,upCount是需要传递的参数

废话少说,例子上。

这个是AS调JS


AS代码:

  1. ExternalInterface.call("upAllComplete",upCount);
复制代码
JS代码:

  1. function upAllComplete(upData){
  2.     //upData是AS中的upCount传过来的值,可以是对象,数组,字符串 ,数字
  3.     alert(upData);
  4. }
复制代码
这个是JS调用AS的(有点麻烦)

JS代码:

  1. var movieName = "testcommand";
  2. //testcommand是HTML中Object的id和name,name和id要一样,这个是考虑到浏览器兼容性
  3. function thisMovie() {
  4.     if (navigator.appName.indexOf ("Microsoft") !=-1) {
  5.          return window[movieName];
  6.     } else {
  7.          return document[movieName];
  8.     }
  9. }

  10. thisMovie().browse(toSwfData);
  11. //browse是swf函数upBrowse的映射名称
复制代码
AS代码:

  1. function upBrowse(jsData){
  2.    trace(jsData);
  3. }
  4. ExternalInterface.addCallback("browse",this,upBrowse);
  5. //映射upBrowse这个函数为接口browse
复制代码
估计如果有人在使用的时候Javascript可能会出现报错之类的问题,到时候跟帖吧。

这个AS版本可以支持到Flash player7(貌似),不过flash本身在浏览器就提供一些接口,诸如:gotoAndPlay(),play(),stop()等等,这个用到的时候可以上网查一下。
posted on 2012-02-22 21:26  星^_^風  阅读(191)  评论(0编辑  收藏  举报