知识点: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;
}
}
}
这个时候怎么获取值?
我的思路就是通过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,消除兼容性问题,就可以解决问题了....
原文:http://wmhfly.com/skillShow/ACTIONSCRIPT/skill-ACTIONSCRIPT-59.html