Actionscript 3 As3导入的自定义类赢得';t在主阶段访问组件

Actionscript 3 As3导入的自定义类赢得';t在主阶段访问组件,actionscript-3,components,Actionscript 3,Components,我有这种情况。我在构建所有的代码,但这有点痛苦,所以我使用Flash绘图功能制作了一个与组件的接口 像往常一样,我得到了一个主类,在一个名为“AreaEdit”的MovieClip实例中有一个接口。在我的自定义类“EditorHTML”中有一个精灵: private var dTela:Sprite; 所以构造函数是这样的: public function EditorHTML(instEdit) { this.Parags = new Array(); this.dTela

我有这种情况。我在构建所有的代码,但这有点痛苦,所以我使用Flash绘图功能制作了一个与组件的接口

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

private var dTela:Sprite;
所以构造函数是这样的:

public function EditorHTML(instEdit) {
    this.Parags = new Array();
    this.dTela = instEdit;
    trace("dTela: "+this.dTela.width+" x "+this.dTela.height);
}
this.dTela.cxEdit.addEventListener(Event.CHANGE, atualizar);
  Sprite( Sprite(this.dTela).getChildByName("cxEdit")).addEventListener(Event.CHANGE, atualizar);
var cxEdit:TextArea = TextArea(Sprite(this.dTela).getChildByName("cxEdit"));
cxEdit.addEventListener(Event.CHANGE, atualizar);
在主课堂上:

Escrit = new EditorHTML(AreaEdit);
因此,“跟踪”按预期显示长方体的尺寸。但是,在自定义类中,如果我尝试访问其中的一个实例,如下所示:

public function EditorHTML(instEdit) {
    this.Parags = new Array();
    this.dTela = instEdit;
    trace("dTela: "+this.dTela.width+" x "+this.dTela.height);
}
this.dTela.cxEdit.addEventListener(Event.CHANGE, atualizar);
  Sprite( Sprite(this.dTela).getChildByName("cxEdit")).addEventListener(Event.CHANGE, atualizar);
var cxEdit:TextArea = TextArea(Sprite(this.dTela).getChildByName("cxEdit"));
cxEdit.addEventListener(Event.CHANGE, atualizar);
返回错误:/Library/WebServer/Documents/as3/bibliotecas_externas/com/gustavopi/txt/EditorHTML.as,第49 1119行:通过静态类型flash的引用访问可能未定义的属性cxEdit。显示:Sprite


我做了一个测试,同一个实例“cxEdit”在主类中可用。因此,组件实例不可用于自定义类。如何解决此问题?

据我所见,您试图将“cxEdit”作为Sprite(dTela)的一个属性访问,它不是Sprite属性,因此出现了错误


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

尝试这样调用它:

public function EditorHTML(instEdit) {
    this.Parags = new Array();
    this.dTela = instEdit;
    trace("dTela: "+this.dTela.width+" x "+this.dTela.height);
}
this.dTela.cxEdit.addEventListener(Event.CHANGE, atualizar);
  Sprite( Sprite(this.dTela).getChildByName("cxEdit")).addEventListener(Event.CHANGE, atualizar);
var cxEdit:TextArea = TextArea(Sprite(this.dTela).getChildByName("cxEdit"));
cxEdit.addEventListener(Event.CHANGE, atualizar);
如果
cxEdit
也是一个
Sprite

已编辑:cxEdit必须是
文本区域
。所以可以这样做:

public function EditorHTML(instEdit) {
    this.Parags = new Array();
    this.dTela = instEdit;
    trace("dTela: "+this.dTela.width+" x "+this.dTela.height);
}
this.dTela.cxEdit.addEventListener(Event.CHANGE, atualizar);
  Sprite( Sprite(this.dTela).getChildByName("cxEdit")).addEventListener(Event.CHANGE, atualizar);
var cxEdit:TextArea = TextArea(Sprite(this.dTela).getChildByName("cxEdit"));
cxEdit.addEventListener(Event.CHANGE, atualizar);

为了让剩下的代码更简单…

错误说,
AreaEdit
Sprite
,而不是
MovieClip
哦,我明白了,我编辑了我的答案是没有用的,因为AreaEdit里面有很多其他组件。解决方案必须覆盖所有组件。也许您可以创建对自定义类中每个组件的引用。