【问题标题】:AS3 Error #1009 in Flash闪存中的 AS3 错误 #1009
【发布时间】:2012-03-16 11:47:37
【问题描述】:

弹出这个错误:

Error #1009: Cannot access a property or method of a null object reference. 
at test9_fla::MainTimeline/PlayerMovement()

这是我的代码:

stage.addEventListener(Event.ENTER_FRAME, PlayerMovement); 

function PlayerMovement(event:Event) {      

    if(down) {
        Jack.y += speed;
        if(Jack.hitTestObject(Muur1))
        {
            Jack.y -= speed;
        }}else if(up)
    {
        Jack.y -= speed;
        if(Jack.hitTestObject(Muur1))
        {
            Jack.y += speed;
        }}else if(left)
    {
        Jack.x -= speed;
        if(Jack.hitTestObject(Muur1))
        {
            Jack.x += speed;
        }}else if(right)
    {
        Jack.x += speed;
        if(Jack.hitTestObject (Muur1))
        {
            Jack.x -= speed;
        }}

我该如何解决这个错误?

【问题讨论】:

  • 通过调试器运行它,看看问题出在哪里。可能是因为使用的变量之一没有启动。
  • @Feia 因为down 没有定义
  • -1 表示看起来非常糟糕的代码。我很难说有一个带有三个 else-if 的 if 语句。另外,使用调试器。

标签: actionscript-3 flash


【解决方案1】:

很可能stage 未定义,您需要等待 onAddedToStage 事件。但是你为什么要直接进入舞台呢?您不需要,您只需将事件侦听器添加到当前影片剪辑(在您的情况下很可能是文档根目录)。

addEventListener(Event.ENTER_FRAME, PlayerMovement);

【讨论】:

  • 因为它可能是一个游戏,所以拥有多个 ENTER_FRAME 处理程序通常是个坏主意。虽然最好完全放弃 ENTER_FRAME 并改用 Timer 事件。
猜你喜欢
  • 1970-01-01
  • 2014-12-20
  • 1970-01-01
  • 2017-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-31
  • 1970-01-01
相关资源
最近更新 更多