如果对象是用flash中的Loader动态加载的,如何将参数传递给构造函数?
这可能吗?如果是,怎么做 否则,还有什么选择 我指的是使用如果对象是用flash中的Loader动态加载的,如何将参数传递给构造函数?,flash,actionscript-3,Flash,Actionscript 3,这可能吗?如果是,怎么做 否则,还有什么选择 我指的是使用 loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, finishLoading); loader.load(new URLRequest("MySWF.swf")); SWF本身不是一个类,更像是一个类和其他东西(如图像或音频字节)的集合,所有这些都已存
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, finishLoading);
loader.load(new URLRequest("MySWF.swf"));
SWF本身不是一个类,更像是一个类和其他东西(如图像或音频字节)的集合,所有这些都已存档并可供使用。SWF不能有构造函数。但是,您可以做的是加载一个SWF,然后在加载完成后,您可以从该SWF实例化一个类,并将您想要的任何参数传递给它的构造函数 此外,还可以将参数发送到SWF,然后在SWF内将其作为FlashVar处理,但这当然不是构造函数:) 然后你可以这样得到它们:
var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters;
trace(paramObj.day);
trace(paramObj.week);
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;
{
SWF本身不是一个类,更像是一个类和其他东西(如图像或音频字节)的集合,所有这些都已存档并可供使用。SWF不能有构造函数。但是,您可以做的是加载一个SWF,然后在加载完成后,您可以从该SWF实例化一个类,并将您想要的任何参数传递给它的构造函数 此外,还可以将参数发送到SWF,然后在SWF内将其作为FlashVar处理,但这当然不是构造函数:) 然后你可以这样得到它们:
var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters;
trace(paramObj.day);
trace(paramObj.week);
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;
{
如果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后调用这些函数,如下所示:
var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters;
trace(paramObj.day);
trace(paramObj.week);
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;
{
如果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后调用这些函数,如下所示:
var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters;
trace(paramObj.day);
trace(paramObj.week);
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;
{
你能详细说明一下你的问题吗?阐明“动态”的含义。你说的是工厂方法,还是完全其他的方法?请看我的更新,我的意思是使用LoaderAh。您是否专门尝试加载SWF并设置其参数?SWF不是类对象,所以它本身不应该有“构造函数”。你能详细说明一下你的问题吗?阐明“动态”的含义。你说的是工厂方法,还是完全其他的方法?请看我的更新,我的意思是使用LoaderAh。您是否专门尝试加载SWF并设置其参数?SWF不是类对象,因此它本身不应该有“构造函数”。感谢“从该SWF实例化一个类并将任何参数传递给它的构造函数”好吧,假设在该SWF中有一个“Train”类,在加载SWF后,该类将像任何其他类一样可用,因此您可以简单地执行
new Train(power)
其中power是您需要传递给Train
构造函数的变量。但是,如果您需要为整个SWF传递变量,我想第二个选项会更好。但是什么是Train是fla后面的代码。例如,如果我在传递背景颜色时创建一个新的Train实例,SWF背景会反映该颜色吗?Train它是该SWF中的一个类,与其他任何类一样,实例化后,可以使用它(例如,将其添加到子列表)。但是,如果您想更改SWF内实例的颜色(例如后台实例),只需:loader.content.background.setColor(0xCCCC)代码>其中loader是您的loader类,background是一个带有自定义方法setColor的类,由您自己实现。感谢“如何从该SWF实例化一个类,并将任何参数传递给它的构造函数”。好吧,假设您在该SWF中有一个“Train”类,加载swf后,该类与任何其他类一样可用,因此您只需执行新序列(功率)
即可,其中功率是您需要传递给序列
构造函数的变量。但是,如果您需要为整个SWF传递变量,我想第二个选项会更好。但是什么是Train是fla后面的代码。例如,如果我在传递背景颜色时创建一个新的Train实例,SWF背景会反映该颜色吗?Train它是该SWF中的一个类,与其他任何类一样,实例化后,可以使用它(例如,将其添加到子列表)。但是,如果您想更改SWF内实例的颜色(例如后台实例),只需:loader.content.background.setColor(0xCCCC)代码>其中loader是您的loader类,background是一个带有自定义方法setColor的类,由您自己实现。感谢如果构造函数不可能,我会这样做,但我更喜欢构造函数。感谢如果构造函数不可能,我会这样做,但我更喜欢构造函数。