我在理解语法时遇到了一些麻烦。
我有一个影片剪辑,当它接触其他影片剪辑时会将声音添加到数组中。 我有一个停止按钮,而不是我想删除栏的事件监听器并发送回原始位置。
我的代码是:
//event listener for the start button
playy.addEventListener(MouseEvent.CLICK, mouseClick2);
function mouseClick2(event:MouseEvent):void
{
bar.addEventListener(Event.ENTER_FRAME, onEnter);
}
//Add event listener for the stop button
stopp.addEventListener(MouseEvent.CLICK, mouseClick3);
//when clicked remove listener send back to position
function mouseClick3(event:MouseEvent):void
{
bar.removeEventListener(MouseEvent.CLICK, mouseClick3);
function mouseClick3(evt:Event):void
{
if(bar.x > 780)
{
bar.x = 215;
}
}
}
function onEnter(evt:Event):void
{
bar.x += 1;
if(bar.x > 780)
{
bar.x = 215;
}
for(var i:int=0; i<blocks.length;i++)
{
if (bar.hitTestObject(blocks[i]))
{
blocks[i].start();
}
else
{
blocks[i].stopSound();
}
}
}
答案 0 :(得分:0)
我猜你的功能应该是这样的:
//when clicked remove listener send back to position
function mouseClick3(event:MouseEvent):void
{
bar.removeEventListener(MouseEvent.CLICK, mouseClick3);
if(bar.x > 780)
{
bar.x = 215;
}
}
问题是你有两个“mouseClick3”功能。内部mouseClick3实际上从不执行,而removeEventListener将定位从不执行的mouseClick3,因为这是函数中的本地变量。如果删除内部mouseClick3,代码将执行,并且您的侦听器将定位正确的函数。