1

我正在为我的移动 Air 应用程序使用来自 Flash Cs6 的代码片段。如何正确删除侦听器?(我收到错误 1120:访问未定义的属性 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 回答