1

モバイル Air アプリに Flash Cs6 のコード スニペットを使用しています。リスナーを適切に削除するにはどうすればよいですか? (エラー 1120: Access of undefined property ocean_slider が表示されます。) 次のコードを使用します。ご協力いただきありがとうございます。

/* Deactivate/Activate Event
Conserve CPU and battery life by suspending expensive processes, such as ENTER_FRAME     and TIMER events, when the application is not in focus.

Instructions:
1. Start timers and add event listeners in "fl_Activate".
2. Stop timers and remove event listeners in "fl_Deactivate".
*/

stage.addEventListener(Event.ACTIVATE, fl_Activate);
stage.addEventListener(Event.DEACTIVATE, fl_Deactivate);

function fl_Activate(event:Event):void
{
// Start timers and add event listeners here.

naturepage.sliders.ocean_slider.addEventListener(Event.ENTER_FRAME, ocean_slider);

function ocean_slider(e:Event):void
{
    ocean_transform.volume = (naturepage.sliders.ocean_slider.value/100);
    ocean_channel.soundTransform = ocean_transform;

}
}

function fl_Deactivate(event:Event):void
{
// Stop timers and remove event listeners here.
naturepage.sliders.ocean_slider.removeEventListener(Event.ENTER_FRAME, ocean_slider);

}

わかった。コードを次のように変更しましたが、まだ問題があります。removeEventListenerなしで公開した後、関数がアプリで機能するため、リスナーは確実に追加されます。しかし、リスナーを削除するコードを追加すると、公開しようとするとエラー 1120 が発生します。

stage.addEventListener(Event.ACTIVATE, fl_Activate);
stage.addEventListener(Event.DEACTIVATE, fl_Deactivate);

function fl_Activate(event:Event):void
{

addEventListener(Event.ENTER_FRAME,myFunction);
function myFunction(event:Event):void
{
ocean_transform.volume = (naturepage.sliders.ocean_slider.value/100);
ocean_channel.soundTransform = ocean_transform;
}
}

function fl_Deactivate(event:Event):void
{
removeEventListener(Event.ENTER_FRAME,myFunction);
}
4

2 に答える 2

0

括弧が外れているようです-コピーして貼り付けたコード、または実行しようとしているコードです。角かっこがそのようになっている理由を確認した後、コードを編集します-具体的には、ocean_slider 関数の 2 つの '}'

いずれにしても、ocean_slider が利用できず、ステージに追加されていないことを意味します。そのため、準備が整う前に fl_Deactivate を呼び出していないことを確認する必要があります。また、同じ名前の関数呼び出しとステージ アイテム (ocean_slider) もあります。これを変更して、機能するかどうかを確認します。

于 2012-11-30T02:44:53.073 に答える
0

わかった。今は機能していると思います。私は機能をずっと外側に置きました。ご協力とご回答ありがとうございます。

function myFunction(event:Event):void
{
ocean_transform.volume = (naturepage.sliders.ocean_slider.value/100);
ocean_channel.soundTransform = ocean_transform;
}

stage.addEventListener(Event.ACTIVATE, fl_Activate);
stage.addEventListener(Event.DEACTIVATE, fl_Deactivate);

function fl_Activate(event:Event):void
{
addEventListener(Event.ENTER_FRAME,myFunction);
}

function fl_Deactivate(event:Event):void
{
removeEventListener(Event.ENTER_FRAME,myFunction);
}
于 2012-12-01T06:57:29.397 に答える