Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果对象是用flash中的Loader动态加载的,如何将参数传递给构造函数?_Flash_Actionscript 3 - Fatal编程技术网

如果对象是用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的类,由您自己实现。感谢如果构造函数不可能,我会这样做,但我更喜欢构造函数。感谢如果构造函数不可能,我会这样做,但我更喜欢构造函数。