2011-02-07 16 views
0

メインのコントロールバーボタン(id = btn)でコンポーネントの状態を変更しようとしています...そのため、イベントリスナーを追加します...コードは次のようになりますフレックス - メインを介してコンポーネントの状態を変更する

import flash.events.EventDispatcher; 
      import flash.events.MouseEvent; 
      import mx.core.FlexGlobals; 

FlexGlobals.topLevelApplication.btn.addEventListener 
       (MouseEvent.MOUSE_DOWN, change_state, true, 0, false); 

public function change_state(e:MouseEvent):void{this.currentState="wait";} 

しかし、私は "定義されていないプロパティchange_stateの1120アクセス"エラーが発生しました...誰かが私を助けることができます!

+0

私はこのコードと非常によく似たものを試しました。それは私のために働いているようです。これはスコープの問題であるように見えますが、それらをすべて確認してください。特に州と協力しているとき。 –

+1

もっとコードを提供すれば、役に立つかもしれません。どこでイベントリスナーを設定していますか?あなたの機能はどこですか?それらが同じコンポーネントにない場合、問題を引き起こす可能性があります。論理的には、topLevelApplicationがカプセル化ルールに違反するため、可能な限りlistenすることをお勧めします。 – JeffryHouser

+0

速い答えのためのthks ...私が掲示したコードはコンポーネントのすべてであり、btnはmain.mxmlにあり、私はちょうどコンポーネントを呼び出し、コントロールバーのボタン(btn)を持っています...それおそらくスコープの問題かもしれません...私はエラーとしてテストプロジェクトを作成しようとしました...しかし、ボタンは状態を変更しません。 – klyn

答えて

0

change_stateのアンダースコアが問題を引き起こしていると感じましたが、参照する際に範囲の問題があると感じました。

import flash.events.EventDispatcher; 
import flash.events.MouseEvent;    
import mx.core.FlexGlobals; 

FlexGlobals.topLevelApplication.btn.addEventListener(MouseEvent.MOUSE_DOWN,this.changeState, true, 0, false); 

public function changeState(e:MouseEvent):void{this.currentState="wait";} 

これは大きな違いがありますか?

関連する問題