知识点:import flash.display.LoaderInfo 使用loaderInfo.parameters["id"]的方式获取值。
简单的Demo
package code{ import flash.display.Sprite; import flash.display.LoaderInfo; public class gbCore extends Sprite{ private var id:String; public function gbCore() { id = loaderInfo.parameters["id"]; writeVal.txt.text = id; } } }
二、as3.0获取URL是wmhfly.com?id=50格式的参数值这个时候怎么获取值?
我的思路就是通过as去调用js,有js去获取值然后在回传给flash,中转的方式实现;
三、js和flash交互通信知识点:import flash.external.ExternalInterface; as--js:ExternalInterface.call(js函数名称,[传递参数值...]) js--as:ExternalInterface.addCallback(js函数名称,as等待被调用函数名称)
简单的Demo
js code
//as调用函数 function Alert(msg) { alert(msg) } //js调用as function thisMovie(movieName) { if (window.document[movieName]) { return window.document[movieName]; } else if (navigator.appName.indexOf("Microsoft Internet") == -1) { if (document.embeds && document.embeds[movieName]) return document.embeds[movieName]; } else { return document.getElementById(movieName); } } function toASS(value) { thisMovie("toJs").toASS(value); }
as code
package code{ import flash.display.Sprite; import flash.events.MouseEvent; import flash.external.ExternalInterface; public class toJs extends Sprite{ public function toJs() { toJS.addEventListener(MouseEvent.CLICK,clickHandler); //添加回调函数 ExternalInterface.addCallback("toASS",callHandler); } //as调用js方法 private function clickHandler(e:MouseEvent):void{ //执行调用 ExternalInterface.call("Alert","hello word!"); } private function callHandler(msg:String):void{ Toas.txt.text = msg; } } }
提醒:在js调用as的调试中,很可能会遇到ie有效,而FF无效的bug。这个时候,很可能是你的插入Flash的html结构不兼容。在FF下是要用embed的标签的,一般我们测试都是用Flash默认发布的代码测试,这个时候就会让你测试的特别郁闷,总是无法解决FF的bug,此时,你就可以用一个swfobject.js等组件来插入你的flash,消除兼容性问题,就可以解决问题了....
附上:DEMO下载【注意,需要iis的支持】
原文:http://wmhfly.com/skillShow/ACTIONSCRIPT/skill-ACTIONSCRIPT-59.html