2010-12-28 7 views
0

私のメインステージにはすでに2つのTLFテキストボックスがあります。プロパティインスペクタウィンドウでは、これらのインスタンス名に "txt1"と "txt2"を付けます。Flashはステージ「インスタンス#」のオブジェクトに自動的に名前を付けます

私は単一のmouseupイベントを発生させようとしており、発生したテキストボックスを特定しています。

マイドキュメントクラスは、次のコードを持っています

package { 
import flash.display.Sprite; 
import flash.events.KeyboardEvent; 

public class SingleEvent extends Sprite{ 

    public function SingleEvent() { 
     // constructor code 
     root.addEventListener(KeyboardEvent.KEY_UP, textChanged,false,0,true); 
    } 

    private function textChanged(e:KeyboardEvent){ 
     trace(e.target.name); 
     trace(" " + e.target); 
     switch(e.target){ 
      case txt1: 
       trace("txt1 is active"); 
       break; 
      case txt2: 
       trace("txt2 is active"); 
       break; 
      default: 
       break; 
     } 
    } 

    } 
} 

出力例は次のとおりです。

instance15 
    [object Sprite] 
instance21 
    [object Sprite] 

オブジェクトがステージ上に既にあるので、私はそれらを認識するために点滅取得する方法を確認していません"instance#"の代わりに "txt1"と "txt2"としてください。 .nameプロパティを設定しようとしましたが効果がありませんでした。

公開設定では、「ステージインスタンスを自動的に宣言します」が選択されています。

また、複数のスライダーコンポーネントに対して1つの変更イベントを設定することはできますか?以下は発火しません:Flash Playerがコンストラクタが呼び出された時点でTLFTextFieldsを初期化していないようだ任意のヒント

+0

使用しているFlashのバージョンは何ですか?それは問題ではありませんが、あなたのコードは完全にうまく動作します。 – sberry

+0

ああ...私はそれを取り戻す。私はあなたがあなたの質問にTLFの要因に気づいていない、CS5を使用して参照してください。ダイナミックからTLFに変更するときと同じ動作をします。 – sberry

+0

はいCS5。それは動的テキストのためにはうまくいきません。私は変更し、そのような種類のテキストを使用する必要があります。しかし、私はTLFを使用していたので、きれいに見えます。 – meowMIX3R

答えて

0

ため

root.addEventListener(SliderEvent.CHANGE, sliderChanged,false,0,true); 

感謝を。これを試してみてください:

package { 

    import flash.display.MovieClip; 
    import flash.utils.describeType; 
    import flash.events.Event; 

    public class TestTLF extends MovieClip { 

     private function onEnterFrame (ev:Event) : void { 
      removeEventListener (Event.ENTER_FRAME, onEnterFrame); 
      for (var i:int = 0; i < numChildren; i++) { 
       var obj:Object = getChildAt(i); 
       trace (obj.name + ":"+describeType(obj)); 
      } 
     } 

     public function TestTLF() { 
      addEventListener (Event.ENTER_FRAME, onEnterFrame); 
     } 
    } 

} 

あなたのTFLTextFieldsの両方が認識され、神秘的に作成された追加のオブジェクト「__id#」と「インスタンス#」に加えて、それを見つけるでしょう。

また、Sliderコンポーネントは明らかにSliderEventを「バブル」しないため、ルートオブジェクトに到達することはありません。ただし、何度でもハンドラ関数を割り当てることができます。そのため、すべてのスライダにリスナを追加するだけで、同じsliderChanged関数を参照することができます。

関連する問題