モバイル 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);
}