好的,在我的游戏主菜单中,我有一个发光效果,所以当你悬停在看不见的按钮'startdesu‘上时,脚本会使整个菜单发光,渐入佳境。此代码(从事件侦听器开始)已对菜单上的每个按钮重复,并对按钮实例名称和函数名进行了适当的更改。唯一的问题是,当我单击'startdesu‘并将我带到下一个场景时,我开始收到重复错误,"TypeError: Error #1009:无法访问空对象引用的属性或方法。at bjvb_fla::MainTimeline/增加eGlow()“。我已经尝试删除发光事件侦听器时,按钮被点击和一切,但没有运气。请帮助!;0;
为了简洁起见,这里是基本的代码,但如果有帮助的话,我可以发布整个代码。(另外,当我从游戏返回到开始菜单时,我会得到同样的零错误。
import flash.filters.*;
import flash.events.Event;
stop();
wow.alpha=0.5;
var menuGlow:GlowFilter = new GlowFilter();
menuGlow.color = 0xffffff;
menuGlow.blurX = 20;
menuGlow.blurY = 20;
menuGlow.alpha = 0;
menu.filters = [menuGlow];
var glow:Boolean = false;
startdesu.addEventListener(MouseEvent.MOUSE_OVER, addGlow);
startdesu.addEventListener(MouseEvent.MOUSE_OUT, removeGlow);
startdesu.addEventListener(Event.ENTER_FRAME, increaseGlow);
function addGlow(e:MouseEvent):void
{
glow = true;
}
function removeGlow(e:MouseEvent):void
{
glow = false;
}
function increaseGlow(e:Event):void
{
if(glow == true)
{
menuGlow.alpha = menuGlow.alpha + 0.02;
}
else if(glow == false)
{
menuGlow.alpha = menuGlow.alpha - 0.02;
}
menu.filters = [menuGlow];
}
发布于 2014-11-16 06:07:25
这一行可能会导致错误:
menu.filters = [menuGlow];
在第二个场景中,可能没有实例名为“菜单”的对象。只要添加一个检查对象是否存在,就可以修复错误,如下所示:
function increaseGlow(e:Event):void
{
//if there's no menu object, return
if(!menu) return;
if(glow == true) {
menuGlow.alpha = menuGlow.alpha + 0.02;
} else {
menuGlow.alpha = menuGlow.alpha - 0.02;
}
menu.filters = [menuGlow];
}
但是正确的解决方案是删除事件侦听器。不知道为什么它不适合您,但是您应该能够在切换场景之前将其添加到单击事件处理程序中。
startdesu.removeEventListener(Event.ENTER_FRAME, increaseGlow);
当尝试删除事件侦听器时,会出现哪些错误?
https://stackoverflow.com/questions/26952978
复制相似问题