[英]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.