[ActionScript] AS3利用SWFObject与JS通信

首先介绍SWFObject的用法:

swfobject.embedSWF(swfUrl, id, width, height, version, expressInstallSwfurl, flashvars, params, attributes) 5个必须的参数和4个可选的参数:

1. swfUrlString,必须的)指定SWFURL

2. idString,必须的)指定将会被Flash内容替换的HTML元素(包含你的替换内容)的id

3. widthString,必须的)指定SWF的宽。

4. heightString,必须的)指定SWF的高。

5. versionString,必须的)指定你发布的SWF对应的Flash Player版本(格式为:major.minor.release

6. expressInstallSwfurlString,可选的)指定express install SWFURL并激活Adobe express install

7. flashvarsString,可选的)用name:value对指定你的flashvars

8. paramsString,可选的)用name:value对指定你的嵌套object元素的params

9. attributesString,可选的)用name:value对指定object的属性

 

以下这段代码给出了SWFObject的常用参数:

var so = new SWFObject(swf, id, width, height, version, backgroundColor ,[quality, xiRedirectUrl, redirectUrl, detectKey]);

so.addParam("Param1", "Param2");

so.addParam("Param3", "Param4");

so.addParam("Param5", "Param6");

so.addVariable("variable1", "value1");

so.addVariable("variable2", "value2");

so.addVariable("variable3", "value3");

so.addVariable("variable1", getQueryParamValue("variable1"));

so.addVariable("variable2", getQueryParamValue("variable2"));   so.write("content");

解释一下这些参数的作用:

var so = new SWFObject(swf, id, width, height, version, backgroundColor ,[uality, xiRedirectUrl, redirectUrl, detectKey]);         //这段是SWFObject必须的基本参数,所有SWFObject都必须包含的。  

 so.addParam("Param1", "Param2");   //这里是给Flash添加内联参数,可以实现诸如背景透明之类的效果。依照需求添加就可以了,参数和emded/object标签是一样的代码,下同。   

so.addParam("Param3", "Param4");

so.addParam("Param5", "Param6");

so.addVariable("variable1", "value1");    //这里是给Flash添加FlashVar,这是以FlashVar的方式给FlashRoot添加变量,对于Number型变量在Flash端需要做类型转换。    

so.addVariable("variable2", "value2");    

so.addVariable("variable3", "value3");    

so.addVariable("variable1", getQueryParamValue("variable1"));   //Flash获取URL变量对于url?arg1=test1&arg2=test2这样用GET方式传递变量的URL,我们可以用getQueryParamValue方法来获取变量。    

so.addVariable("variable2", getQueryParamValue("variable2"));    

so.write("content");    //这里是至关重要的一个地方,他是用一段特定内容取代Flash无法显示时的内容。可以事先在CSS里定义好样式,在文档里使用div标签写出来。这里在调用过来。

下面写一个AS与JS通信的实例:

JS端:

 

 1 <script type="text/javascript">
 2   var _file = "http://localhost:89/VideoPlayer/bin-debug/assets/3.jpg|http://localhost:89/VideoPlayer/bin-debug/assets/2.jpg";
 3   var _thumb = "http://localhost:89/VideoPlayer/bin-debug/assets/3.jpg|http://localhost:89/VideoPlayer/bin-debug/assets/2.jpg";
 4   var _wzsm = "文字1|文字2";
 5   var so = new SWFObject("MultPlayer.swf","CuPlayer","800","600","11","#00ffff");
 6   so.addParam("allowfullscreen","true");
 7   so.addParam("allowscriptaccess","always");
 8   so.addParam("wmode","opaque");
 9   so.addParam("quality","high");
10   //so.addParam("salign","lt");
11   so.addVariable("time","5000");//如自动播放图片间隔的时间,为0不自动播放。
12   so.addVariable("startview","0");//0代表开始显示图片区域,1代表开始显示视频区域。
13   so.addVariable("file",_file);//调用格式以“|”进行分割。
14   so.addVariable("thumb",_thumb);//视频或者图片图标
15   so.addVariable("wzsm",_wzsm);//文字说明以”|”进行分割与文件一一对应点击视频或图片显示到文字区域。
16   so.addVariable("autoplay","true");//是否自动播放图片或视频
17   so.addVariable("videoskin","http://localhost:89/TestSwfObject/src/demo/videoskin.swf");
18   so.write("CuPlayer");//显示到相应DIV中
19 </script>

AS端:

 

 1 package
 2 {
 3     import flash.display.Sprite;
 4     import flash.events.Event;
 5     
 6     /**
 7      * @author Frost.Yen    
 8      * @E-mail 871979853@qq.com
 9      * @create 2015-9-4 上午11:56:13
10      *
11      */
12     public class TestSWFOject extends Sprite
13     {
14         public function TestSWFOject()
15         {
16             if (stage) init();
17             else addEventListener(Event.ADDED_TO_STAGE, init);
18         }
19         private function init(e:Event = null):void 
20         {
21             removeEventListener(Event.ADDED_TO_STAGE, init);
22             this.loaderInfo.addEventListener(Event.COMPLETE,onLoaded);
23         }
24         private function onLoaded(e:Event):void
25         {
26             trace(stage.loaderInfo.parameters.time);
27             trace(stage.loaderInfo.parameters.startview);
28             trace(stage.loaderInfo.parameters.autoplay);
29             trace(stage.loaderInfo.parameters.videoskin);
30             trace(stage.loaderInfo.parameters.file);
31             trace(stage.loaderInfo.parameters.wzsm);
32             trace(stage.loaderInfo.parameters.thumb);
33         }
34     }
35 }

 

 

 

 

 

 

 

原文地址:https://www.cnblogs.com/frost-yen/p/4781507.html