0

私はactionscript 3.0が初めてです。次のコードがありました:

num0.addEventListener(MouseEvent.CLICK, num0_click);
function num0_click(event:MouseEvent):void
{
    trace(num0);
}

Withnum0は、ステージ上に手動で追加されたムービークリップであり、他のムービークリップのメンバーではありません。出力はnullでした。状況を説明して、num0そのような関数内にアクセスする方法を教えてください。

編集

奇妙なことに、イベント リスナーとして使用しない場合、この関数は正常に機能します。

trace(num0);

num0.addEventListener(MouseEvent.CLICK, num0_click);
function num0_click(event:MouseEvent):void
{
    trace(num0);
}

num0_click(null);

次のような出力

[object ...]
[object ...]

ムービー クリップ インスタンスnum0が (swf 上で) クリックされると、次のようになります。

null

4

1 に答える 1

0

非常に単純に、

event.currentTargetそのイベントを現在処理/処理しているオブジェクトを提供します。

イベント ハンドラnum0_clickは にアタッチされているためnum0event.currentTargetは必要なものを返します。

編集

への参照num0はどこにも保存されません (指定したコードから)。後でその名前で再度アクセスしたい場合num0は、 Class スコープで (または、クラスを使用していない場合は、すべての関数の外で) そのように変数を宣言する必要があります。

var num0:MovieClip;

次に、インスタンス化して、次のような任意の関数で参照できます。

function init():void {
    num0=new MovieClip();
}

function stop():void {
    num0.stop();
}

編集 2 addEventListener でリスナー関数をインラインで宣言することもできます。

num0.addEventListener(MouseEvent.CLICK, function (event:MouseEvent):void {
    trace(num0);
});
于 2012-07-05T05:46:31.183 に答える