Переменная addChild не определена? - PullRequest
3 голосов
/ 07 апреля 2009

У меня проблема с использованием AS3 - Flash CS3 выдает мне это сообщение об ошибке: Ошибка # 1065: переменная addChild не определена.

Есть идеи, что случилось?

Это мой код:

package coa.application{
    import flash.display.SimpleButton;
    import flash.text.TextField;
    import flash.text.TextFieldType;

    public class Tab extends SimpleButton {

        public var menuType:String;

        public function Tab(tabText:String, menuType:String) {
            this.menuType=menuType;
            var mytext:TextField=createTextField(0,0,200,20);
            mytext.text=tabText;
        }
        private function createTextField(x:Number, y:Number, width:Number, height:Number):TextField {
            var result:TextField = new TextField();
            result.x=x;
            result.y=y;
            result.width=width;
            result.height=height;
            addChild(result);
            return result;
        }
    }    
}

1 Ответ

5 голосов
/ 07 апреля 2009

Это потому, что SimpleButton наследуется не от DisplayObjectContainer, а от InteractiveObject.

addChild - это метод из DisplayObjectContainer. SimpleButton содержит 3 объекта отображения для 3 состояний и объекта нахождения, они называются upState, overState, downState и hitTestState.

Так что вы должны иметь возможность установить один из них.

//addChild(result);
upState = result;

Вы можете просто добавить DisplayObjectContainer (например, Sprite) к состояниям, а затем вместо этого добавить туда TextField на случай, если вы захотите добавить больше графики в состояния.

upState = new Sprite();
upState.addChild(new MyButtonBackground()); //Make this class.
upState.addChild(result);
...