私はフレックスアプリケーションを持っていて、を使用してそれにフラッシュ(SWF)ファイルを埋め込みました<mx:SWFLoader>
。Flashファイルには「終了」ボタンがあります。フレックスアプリケーションでボタンクリックイベントを処理できるようにしたい。
そのため、フラッシュファイルのそのボタンをクリックしたときに、親フレックスアプリケーションでアクションを実行したいと思います。これどうやってするの?ありがとう!
私はフレックスアプリケーションを持っていて、を使用してそれにフラッシュ(SWF)ファイルを埋め込みました<mx:SWFLoader>
。Flashファイルには「終了」ボタンがあります。フレックスアプリケーションでボタンクリックイベントを処理できるようにしたい。
そのため、フラッシュファイルのそのボタンをクリックしたときに、親フレックスアプリケーションでアクションを実行したいと思います。これどうやってするの?ありがとう!
フラッシュ「バブル」からのイベントの場合、これを行うことができます。Flashからイベントをディスパッチするときは、次のようにします。
dispatchEvent(new Event("myEventName", true)); // that 'true' for bubbles, in the constructor
そうすれば、Flexで問題なくキャプチャできるはずです。
addEventListener("myEventName", handler);
addEventListener
... SWFLoader以上のコンポーネントで呼び出されている限り。
Flash SWFを変更できない場合、または完全なブラックボックスの場合は、MouseEvent.CLICK
ハンドラーをuseCapture = true
に登録し、それが正しいボタンであるかどうかを確認できます。
swfLoader.addEventListener(MouseEvent.CLICK, swfLoader_clickHandler, true, 0, true);
protected function swfLoader_clickHandler(event:MouseEvent):void
{
if (event.target.name == "some_way_to_identify_the_button")
// do X
}
お役に立てば幸い、ランス
AS3 のローダー クラスを使用して実行できます (フレックス スクリプト内)。あなたも動的にそれを行うことができます。MXMLで
<mx:SWFLoader id="myLoader" width="500" source="swf/kabin42.swf"
complete="initSwf();"/>
private function initNestedAppProps2():void {
var loadedMc:MovieClip = MovieClip(myLoader.content);
loadedMc= MovieClip(myLoader2.content);
//access the button with instance name myButton:
loadedMc.myButton.addEventListener(MouseEvent.CLICK, onBtnClick);
}
private function onBtnClick(event:MouseEvent):void{
Alert.show("button clicked 2");
}
myButton がクリックされると、onBtnClick イベント ハンドラー メソッドが呼び出されます。これで問題が解決することを願っています。