簡體   English   中英

如何從 as3 中的外部 class 更改舞台上的文本字段

[英]How to change textfields on stage from an external class in as3

我試圖從外部 class 更改舞台上的文本字段,但它不起作用。 這就是我如何嘗試的代碼:

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"]);

如果您的示例是您的文檔 class -

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 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM