这可能吗?如果是的话怎么样?
否则有什么替代方案?
通过动态我的意思是使用
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, finishLoading);
loader.load(new URLRequest("MySWF.swf"));
答案 0 :(得分:2)
SWF本身不是一个类,更像是一个类和其他东西(如图像或音频字节)的集合,它们都已存档并可以使用。您不能拥有SWF的构造函数。但是,您可以做的是加载SWF,然后在加载完成后,您可以从该SWF实例化一个类,并将您想要的任何参数传递给它的构造函数。
此外,可以将参数发送到SWF,然后在swf中将它们作为flashvars处理,但当然不是构造函数:)
loader.load(new URLRequest("MySWF.swf?day=tue&week=3"));
然后你可以这样得到它们:
var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters;
trace(paramObj.day);
trace(paramObj.week);
答案 1 :(得分:1)
如果SWF中有文档类,那么在构造函数中使用参数创建公共init方法,甚至使用getter和setter,而不是使用参数:
import flash.display.MovieClip;
public class MySWF extends MovieClip
{
private var _var1 :String;
private var _var2 :int;
public function MySWF():void
{
}
public function init(var1:String):void
{
_var1 = var1;
}
public function get var2():int
{
return _var2;
}
public function set var2(value:int):void
{
_var2 = value;
}
}
然后你可以在加载你的swf之后调用这些:
private function finishLoading(event:Event):void
{
var mySWF:MySWF = event.target.content as MySWF;
addChild(mySWF);
mySWF.init("This is a string");
mySWF.var2 = 5;
{