As3导入的自定义类不会在主阶段访问组件

时间:2013-06-07 20:17:00

标签: actionscript-3 components

我有这种情况。我正在构建所有代码,但它有点痛苦,所以我使用Flash绘图功能创建了一个包含组件的界面。

像往常一样,我使用名为“AreaEdit”的MovieClip实例中的接口获得了一个主类。在我的自定义类“EditorHTML”中有一个Sprite:

private var dTela:Sprite;

所以构造函数是这样的:

public function EditorHTML(instEdit) {
    this.Parags = new Array();
    this.dTela = instEdit;
    trace("dTela: "+this.dTela.width+" x "+this.dTela.height);
}

在主要班级:

Escrit = new EditorHTML(AreaEdit);

因此,跟踪会按预期显示框的尺寸。但是,在自定义类中,如果我尝试像这样访问一个实例:

this.dTela.cxEdit.addEventListener(Event.CHANGE, atualizar);

返回错误:/Library/WebServer/Documents/as3/bibliotecas_externas/com/gustavopi/txt/EditorHTML.as,Line 49 1119:通过带有静态类型flash.display的引用访问可能未定义的属性cxEdit:Sprite

我做了一个测试,主要类中有相同的实例“cxEdit”。因此接缝组件实例不适用于自定义类。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

尝试这样称呼:

  Sprite( Sprite(this.dTela).getChildByName("cxEdit")).addEventListener(Event.CHANGE, atualizar);

如果cxEdit也是Sprite

已修改:cxEdit必须为TextArea。所以可以这样做:

var cxEdit:TextArea = TextArea(Sprite(this.dTela).getChildByName("cxEdit"));
cxEdit.addEventListener(Event.CHANGE, atualizar);

为了使代码的其余部分更容易......

答案 1 :(得分:0)

从我所看到的,你试图访问“cxEdit”作为Sprite(dTela)的属性,这不是Sprite属性,因此是错误。

你是否可以传入AreaEdit.cxEdit作为参数而不仅仅是AreaEdit?