首先介绍SWFObject的用法:
swfobject.embedSWF(swfUrl, id, width, height, version, expressInstallSwfurl, flashvars, params, attributes) 有5个必须的参数和4个可选的参数:
1. swfUrl(String,必须的)指定SWF的URL。
2. id(String,必须的)指定将会被Flash内容替换的HTML元素(包含你的替换内容)的id。
3. width(String,必须的)指定SWF的宽。
4. height(String,必须的)指定SWF的高。
5. version(String,必须的)指定你发布的SWF对应的Flash Player版本(格式为:major.minor.release)
6. expressInstallSwfurl(String,可选的)指定express install SWF的URL并激活Adobe express install 。
7. flashvars(String,可选的)用name:value对指定你的flashvars。
8. params(String,可选的)用name:value对指定你的嵌套object元素的params。
9. attributes(String,可选的)用name:value对指定object的属性
以下这段代码给出了SWFObject的常用参数:
var so = new SWFObject(swf, id, width, height, version, background-color [, 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, background-color [, quality, 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的方式给Flash的Root添加变量,对于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 [email protected] 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 }