Flash AS3动态文本不断给出错误1119

时间:2012-04-06 19:59:29

标签: actionscript-3 flash dynamic-text

S o我有一个接受String的方法,然后假设将按钮上的动态文本框设置为String。

public function setText(caption:String) {
  this.btext.text = caption;
}

我真的不明白为什么这种方法会产生1119错误 Access of a possibly undefined property btext through a reference with static type Button.as

动态文本框的实例名称为btext,我尝试删除文本框并创建一个新文本框,但这仍会产生1119错误。我还阅读了另一个堆栈问题,试图this['btext'].text = caption;给了我很多运行时错误。

基本上我做错了什么? 谢谢你的帮助。

修改

这是我正在使用的代码,我创建了一个按钮实例,将它添加到舞台并将其存储在带有此代码的数组中。

创建按钮的代码

this.buttonArray.push(this.addChild(weaponButton));

Button.as

package  {

    import flash.display.MovieClip;
    import flash.filters.*;

    public class Button extends MovieClip {

        public function Button() {

        }

        public function setPosition(xpos:int, ypos:int) {
            this.x = xpos;
            this.y = ypos;
        }

        public function setScale(xScale:Number, yScale:Number) {
            this.scaleX = xScale;
            this.scaleY = yScale;
        }

        public function addDropShadow():Array {
            var dropShadow:DropShadowFilter = new DropShadowFilter(2,45,0, 1,4,4,1,1,true);
            return [dropShadow];
        }

        public function removeDropShadow():Array {
            return null;
        }

        public function setText(caption:String) {
            this.btext.text = caption;
        }
    }

}

2 个答案:

答案 0 :(得分:2)

如前所述,btext是对象的实例名称。这里我假设btext是您在库中创建的对象 在你的班上,你做错了两件事。所以让我们检查你的方法。

public function setText(caption:String) {
  this.btext.text = caption;
}

首先,错误的是你正在使用“这个”。 “this”是对您所在类的当前实例的引用。并且您说btext是所述实例上的属性。我假设它不是因为您将btext定义为库中的对象。这将使您获得属性未定义的错误
现在第二个问题就是你要问“好我如何在课堂上引用btext”。您需要知道的是,只有添加到显示列表IE:stage的对象才能通过舞台访问对象 你可以这3种方式做到这一点 第一种方法是将对按钮的引用传递给类,并将其存储为类的属性 第二种方法是将您的类添加到舞台,并在类中侦听addedToStage事件。那时你可以访问该对象。

MovieClip(root)["btext"].text


前两种方法不是很好的做法,因为btext不是类的一部分,一般的经验法则是封装你的类。
要使这项工作成功,您可以让您的类将值分配给类中的属性,然后触发事件并使该类的父级侦听该事件,然后只需获取值并分配。

Here is some suggested reading

答案 1 :(得分:0)

我认为变量btext根本不存在,还是继承自Movieclip?