【问题标题】:Pass class as constructor's argument将类作为构造函数的参数传递
【发布时间】:2011-10-26 14:23:12
【问题描述】:

我正在尝试将我的对象类作为构造函数参数传递。我有这样的事情:

package myclass {

import flash.display.MovieClip;
import flash.display.BitmapData;
import flash.display.Bitmap;

public class Example extends MovieClip {

    public var  _stageImg:Bitmap;
    public var  _stageData:BitmapData;
    public var  _stageClass:Class;

    private var _stage:Object;

    public function Example(stageClass:Class) {
        _stageClass = stageClass;

    }

    public function createStage():Object {
        _stageData      = new _stageClass(0,0);
        _stageImg       = new Bitmap(_stageData);
        _stage          = addChild(_stageImg);

        return _stage;
    }

}
}

现在,当我尝试创建示例时:

    import myclass.Example;
    var example:Example = new Example(myObjClass);

我收到消息,我没有传递任何变量(错误 #1063)。这是为什么?它有什么问题?

【问题讨论】:

  • 你在哪里定义 myObjClass?

标签: actionscript-3 class constructor arguments


【解决方案1】:

您传递的是类的实例,而不是类本身的定义。

在 ActionScript 中它有点笨拙,但您可以像这样获得实例的类定义:

//first get the fully qualified classname, i.e. including the package
var className:String = getQualifiedClassName(myObjInstance);
//then get the class definition for that name
var Klass:Class = getDefinitionByName(className) as Class;
//and finally pass it to your constructor
var example:Example = new Example(Klass);

(注意:我将变量命名为“Klass”,因为“Class”是保留关键字)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-02
    • 2016-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-28
    相关资源
    最近更新 更多