Flex 4を使用してアプリケーションを作成しています。アプリを起動すると、XMLファイルが読み取られ、オブジェクトにデータが入力されます。.send()呼び出しは非同期であるため、この入力されたオブジェクトをリッスン/監視し、終了したら、他のクラスにイベントをディスパッチして、他のクラスが使用できるようにします。
package model{
public class LectureService extends HTTPService{
[Bindable]
private var _lecture:Lecture;
...
}
xmlは正しく解析され、Lectureクラスのオブジェクト講義内にロードされます。
main.mxmlアプリでMXML表記を使用すると、正常に機能します(オブジェクトは、非同期要求の後に入力されたときに使用されます)。
<mx:Image id="currentSlide" source={lectureService.lecture.slides.getItemAt(0).path} />
しかし、別のActionScriptクラスがあり、このディスパッチされた([Bindable]による)イベントをリッスンできません。
package components{
public class LectureSlideDisplay extends Image
{
public function LectureSlideDisplay()
{
super();
this.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE, onChangeTest);
}
private function onChangeTest(e:PropertyChangeEvent):void {
trace('test');
}
私はすでに試しました:
- (上記のように)addEventListener(PropertyChangeEvent.PROPERTY_CHANGE、methodName)を使用します。
- [Bindable]を[Bindalbe( "nameEvent")]に変更して、これをリッスンしようとしましたが、何もしませんでした。
- CreateWatcherメソッドを使用すると、機能しません。
クラスの生成されたコードを調べようとしましたが、役に立ちませんでした
if (this.hasEventListener("propertyChange")){ this.dispatchEvent(mx.events.PropertyChangeEvent.createUpdateEvent(this, "lecture", oldValue, value)); }
どうすれば、入力されたオブジェクトを別のクラスでリッスンして取得できますか?別のクラスから聞いていることが問題かもしれませんが、この場合、これをどのように実装できますか?イベントが派遣されているようですが、聞き取れません。