我收到此错误:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at Lemonade_fla::MainTimeline/frame3()[Lemonade_fla.MainTimeline::frame3:48]
从这段代码中
buy_sugar.addEventListener(MouseEvent.CLICK, buysugar);
function buysugar(event:MouseEvent):void{
if (cash1>=0.50){
buy.play();
cash1 = cash.text.text;
cash1 = cash1 - 0.25;
sugar = sugar_count.text;
sugar=sugar+16;
}
}
有没有人知道为什么?
答案 0 :(得分:2)
从开场问题的评论来看,似乎buy_sugar为null。您认为buy_sugar是时间轴上的一个movieclip,因此可以在您的代码中安全地引用,但如果buy_sugar确实存在,则不会出现此错误。
你绝对肯定buy_sugar与你正在进行的通话存在于同一帧上吗?
假设您目前正在第3帧......
buy_sugar.addEventListener(Event.FOO, onFoo); // if buy_sugar exists on frame 3, this works.
但是如果你在第2帧呢?
gotoAndStop(3);
buy_sugar.addEventListener(Event.FOO, onFoo); // problem... this can fail if buy_sugar exists on 3 but NOT on 2.
确保您引用的剪辑实际存在于写入调用的帧中,并仔细检查您的实例名称拼写。
EDIT ::
那些照片非常有趣。看来buy_sugar是第3帧上存在的movieclip符号,但是shop_sugar在第3帧脚本中跟踪为null。以下是进一步调试的一些建议。
在您有跟踪的代码(buy_sugar);中,将其替换为 trace(“测试buy_sugar presence”,buy_sugar,currentFrame);
从舞台上的位置剪切buy_sugar movieclip。在所有其他层下面创建一个新图层,并将buy_sugar粘贴到第1帧的关键帧中。不要在该图层上添加任何其他关键帧。目标是确保所有帧上的buy_sugar始终存在。
让我知道你这样做时的看法。
修改
现在我们确定在所有帧上存在 时可以检测到 ,将该关键帧从1扫描到3,以便剪辑仅存在于第3帧。它是否仍然存在工作?如果是这样,只需将该图层移动到最适合的位置。
如果它不起作用,再次将该图层移动到movieclip看起来最好的位置。而不是将剪辑仅放在第3帧上,而是在第3帧上创建一个关键帧,并将剪辑放在所需的位置,而在所有其他帧上,剪辑会在可见舞台之外的某处生成。这有点像hacky,但它可以解决问题。
答案 1 :(得分:0)
我想:
你可以试试这个:
if(buy)
buy.play();
else
trace("buy object is null");
if(cash && cash.text)
cash1 = cash.text.text;
else
trace("cash object is null");
你能更详细一点吗?
答案 2 :(得分:0)
其中一个项目尚未定义(或在其他地方私下定义)。
假设这是正确的代码段,它可以是buy,cash,cash.text或sugar_count,因为这些是您尝试使用点语法(。)访问属性或方法的对象。