2011-01-28 2 views
0

クラスからステージ/ルート上の表示オブジェクトを取得するにはどうすればよいですか?ステージ/ルートに表示オブジェクトを取得しますか?

テキストフィールドtxtはルートにありますが、クラスからどのように取得できますか?

var txt = new TextField(); 
with(txt){ 
    type = TextFieldType.INPUT; 
    border = true; 
    textColor = 0xffffff; 
    multiline = true; 
    x = 20; 
    y = 20; 
    width = 270; 
    height = 40; 
} 
addChild(txt); 
txt.name = 'test'; 

class classTest { 
    public function classTest{ 
     trace(this.getChildByName('test')); 
    } 
} 
var cls = new classTest(); 
+0

このコードをタイムラインまたはドキュメントクラスで実装していますか? – Taurayi

+0

getChildByName()を呼び出そうとすると、classTestクラスにそのメソッドがないため、コンパイラエラーがスローされます。 classTestは、getChildByName()を継承するために、SpriteクラスまたはMovieClipクラスをサブクラス化する必要があります。 – Taurayi

答えて

1

あなたのやっていることは正確ではありませんが、最も簡単な方法は、TextFieldオブジェクトが含まれているルートオブジェクトまたはDisplayObjectオブジェクトへの参照を解析して、ClassTestクラス内のその参照によってTextFieldオブジェクトにアクセスすることです。

var txt:TextField = new TextField(); 

with(txt) 
{ 
    type = TextFieldType.INPUT;  
    border = true; 
    textColor = 0xffffff; 
    multiline = true;  
    x = 20;  
    y = 20;  
    width = 270;  
    height = 40; 
} 

addChild(txt); 
txt.name = 'test'; 

class ClassTest 
{ 
    public function ClassTest(p_target:DisplayObjectContainer) 
    {   
      trace(p_target.getChildByName("test")); 

    } // end function 

}// end function 

var classText:ClassText = new ClassTest(this); // parse a reference to root 
0

あなたが正しいことを理解しているかどうかわかりません。 しかし、あなたはあなたの表示オブジェクトに名前を追加する場合は、次のように行うことはない

txt.name = "txt_1"; 
this.getChildByName("txt_1"); 

UPDATE

より良い次のコードを試みることができます。クラス間の通信にイベントを使用することをお勧めそれをですが、とにかく:それはあなたがインスタンス化してきた許可発射したときに(新しいクラスファイル内)

​​3210
+0

ok ..スコープがクラスの場合、これはクラスになります。どのようにしてステージ/ルートスコープを参照できますか? – clarkk

+0

addChild(txt)のようなコードを使用している場合は、 getChildByName( "txt_1")のようなコードを使用できます。それはステージの子供を指します。これを試して。 –

+0

私のコードをもう一度チェックしてください – clarkk

0

import flash.display.Sprite; 
import flash.events.Event; 

public class classTest extends Sprite 
{ 
    public function classTest 
    { 
     addEventListener(Event.ADDED_TO_STAGE, added, false, 0, true); 
    } 

    private function added(evt:Event):void 
    { 
     trace(stage.getChildByName("test")); 
    } 
} 

Event.ADDED_TO_STAGEは、ステージを参照することができるようになりますクラスに追加し、それをステージに追加しました(これがイベントが最初に発生する理由です)。

関連する問題