Как изменить TextFields на сцене с внешнего класса в AS3

StackOverflow https://stackoverflow.com/questions/5831964

Вопрос

Я попытался изменить текстовое поле на сцене с внешнего класса, но это не работает. Это код, как я его попробовал:

package  
{
    import flash.display.*;
    import flash.text.TextField;

    public class Exp extends Sprite
    {
        public function Exp() 
        {
            trace(stage.getChildByName("abc"));
            TextField(stage.getChildByName("abc")).text = "abc";

        }

    }

}

На моей сцене я получил текстовое поле, когда динамически динамически с инстакзалом: «ABC». Но каждый раз, когда я начинаю программу Flash сообщает мне Stage.getChildbyName («ABC») будет нулевым объектом.

Я надеюсь, что кто-то может мне помочь.

Это было полезно?

Решение

Я никогда раньше не использовал GetChildyName .. Вы можете просто использовать это:

var rt:MovieClip = MovieClip(root);
trace(rt["abc"]);

Или короче:

trace(MovieClip(root)["abc"]);

Если ваш пример - ваш класс документов -

package
{
    import flash.display.MovieClip;
    import flash.text.TextField;

    public class Exp extends MovieClip
    {

        public function Exp()
        {
            var r:MovieClip = MovieClip(root);

            TextField(r["abc"]).text = "abc";
        }
    }   
}

Другие советы

Я знаю, что ответ уже был принят на этот вопрос, но я думаю, что это лучше:

package 
{
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.text.TextField;

    public class Main extends Sprite 
    {
        private var _textField:TextField;

        public function Main():void 
        {
            if (stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);

        }// end function

        private function init(e:Event = null):void 
        {
            removeEventListener(Event.ADDED_TO_STAGE, init);

            var textField:TextField = new TextField();
            textField.name = "abc";
            stage.addChild(textField);

            _textField = TextField(stage.getChildByName("abc"));

            trace(_textField.name); // output: abc

        }// end function

    }// end class

}// end package
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top