从一个场景到下一个场景和gettingType1009 Null对象引用错误

时间:2014-11-16 02:07:36

标签: actionscript-3 flash flash-cs6

好吧,在我的游戏主菜单中,我有一个发光效果,这样当你将鼠标悬停在隐形按钮上时,脚本将使整个菜单发光,淡入淡出。已对菜单上的每个按钮重复此代码(来自事件侦听器),并对按钮实例名称和函数名称进行适当更改。唯一的问题是,当我点击'startdesu'它带我到下一个场景,我开始得到重复的错误," TypeError:错误#1009:无法访问空对象引用的属性或方法。     在bjvb_fla :: MainTimeline / increaseGlow()"。我已经尝试在点击按钮时删除发光事件监听器,但一切都没有运气。请帮忙! ; 0;

这是简洁的基本代码,但如果有帮助,我可以发布整个事情。 (另外,当我从游戏回到到开始菜单时,我得到了相同的Null错误。

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];
}

1 个答案:

答案 0 :(得分:0)

这是可能导致错误的行:

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];
}

但正确的解决方案是删除事件侦听器。不确定为什么它不适合你,但你应该能够在切换场景之前在click事件处理程序中添加它。

startdesu.removeEventListener(Event.ENTER_FRAME, increaseGlow);

尝试删除事件侦听器时会出现什么错误?