1

いくつかのシーンでインスタンスとして繰り返し挿入されるボタン シンボルがあります。このボタンはシーン間をリンクし、基本的に同じ機能を実行します。

eventListener MouseEvent.CLICK をシンボル自体に追加して、各シーンの各インスタンスのリスナーを書き直す必要がないようにする方法はありますか?

4

2 に答える 2

2

クラス、つまり「LinkingButton」を作成します。このクラス内に、必要な処理を実行するクリックハンドラーを作成します。

次に、クラスをライブラリ内のシンボルに「リンク」する必要があります。

正しく行われた場合は、シンボルをステージにドラッグするだけで、すぐに機能するはずです。または、コードを使用したい場合は、それも簡単です。

var myButton:LinkingButton = new LinkingButton();
addChild(myButton);
于 2012-05-28T15:27:54.363 に答える
0

シンボル (つまり ) でマウス イベントを受け取ることも、Classそこからイベントを送出することもできません。だからそれは問題外です。

新しいスプライト シンボルを作成し、その中にカスタム ボタンを配置し、そのスプライト内のフレーム スクリプトにリスナーを追加することもできますが、これは非常に面倒です。

これを行う最もクリーンな方法は、Event.ADDED のリスナーをステージに追加することです。これはDisplayObject、表示リストの任意の場所に の新しいインスタンスが追加されるたびにキャッチされます。また、ハンドラー関数を作成して、スペシャルの各インスタンスに適切なリスナーを追加します。ボタン:

 function onInstanceAdded( event:Event ) : void {
     if( event.target ) is MySpecialButton
         event.target.addEventListener( MouseEvent.CLICK, onSpecialButtonClick );
 }

 function onSpecialButtonClick( event:MouseEvent ) : void {
     doMagicStuffHere();
 }

 stage.addEventListener( Event.ADDED, onInstanceAdded );
于 2012-05-28T13:40:07.517 に答える