2013-06-04 61 views
0

我不熟悉ActionScript,我真的需要幫助調試此問題。這就是它說我的輸出,當我運行我的代碼:AS3:TypeError:錯誤#1009:無法訪問空對象引用的屬性或方法。需要幫助

TypeError: Error #1009: Cannot access a property or method of a null object reference. 
    at StreetHobogame_fla::MainTimeline/pickup() 
    at StreetHobogame_fla::MainTimeline/gameloop() 

這是我的代碼:

import flash.events.KeyboardEvent; 

stop(); 
guy.stop(); 

var enemySpeed:Number = 3; 
var wspeed:Number = 0; 
var vy:Number = 0; 
var gv:Number = 1; 
var jumped:Boolean = false; 
var score:Number = 0; 
var lives:Number = 5; 




livesbox.text = lives.toString(); 

stage.addEventListener(Event.ENTER_FRAME,gameloop); 

trace(ground.x); 
var motionspeed:int = 30; 

left.addEventListener(MouseEvent.MOUSE_DOWN, leftMove); 
left.addEventListener(MouseEvent.MOUSE_UP, leftUp); 
right.addEventListener(MouseEvent.MOUSE_DOWN, rightMove); 
right.addEventListener(MouseEvent.MOUSE_UP, rightUp); 
jumpButton.addEventListener(MouseEvent.MOUSE_DOWN, jumpPressed); 

function jumpPressed(e:Event):void 
{ 
    if (! jumped) 
    { 
     vy = -14; 
     jumped = true; 
    } 
} 

function rightUp(e:Event):void 
{ 
    wspeed = 0; 


} 


function rightMove(e:Event):void 
{ 
    wspeed += 10; 
    guy.gotoAndStop(2); 
} 


function leftMove(event:Event):void 
{ 
    wspeed = -10; 
    guy.gotoAndStop(1); 
} 

function leftUp(event:Event):void 
{ 
    wspeed = 0; 

} 



function gameloop(e:Event) 
{ 
    moveplayer(); 
    jumpgravity(); 
    exitlevel1(); 
    //exitlevel2(); 
    pickup(); 
    enemy(); 
    spikes(); 
    enemyMove(); 

    return (0); 

} 

function pickup() 
{ 
    if (guy.hitTestObject(key)) 
    { 
     key.visible = false; 
    } 
    if (guy.hitTestObject(coin1)) 
    { 
     coin1.x = 2000; 
     score++; 
     scorebox.text = score.toString(); 
    } 
    if (guy.hitTestObject(coin2)) 
    { 
     coin2.x = 2000; 
     score++; 
     scorebox.text = score.toString(); 
    } 
    if (guy.hitTestObject(coin3)) 
    { 
     coin3.x = 2000; 
     score++; 
     scorebox.text = score.toString(); 
    } 
    if (guy.hitTestObject(coin4)) 
    { 
     coin4.x = 2000; 
     score++; 
     scorebox.text = score.toString(); 
    } 
} 



function moveplayer() 
{ 
    guy.x += wspeed; 

    if (guy.x < 0) 
    { 
     guy.x = 0; 
    } 
    if (guy.x > 1024) 
    { 
     guy.x = 1024; 
    } 
} 

function jumpgravity() 
{ 
    vy += gv; 
    if (! ground.hitTestPoint(guy.x,guy.y,true)) 
    { 
     guy.y += vy; 
    } 
    if (ground.hitTestPoint(guy.x,guy.y,true)) 
    { 

     guy.y--; 
     vy = 0; 
     jumped = false; 

    } 
} 



function exitlevel1() 
{ 
    if (guy.hitTestObject(exitMC)) 
    { 
     if (key.visible == false) 
     { 
      stage.removeEventListener(Event.ENTER_FRAME,gameloop); 
      left.removeEventListener(MouseEvent.MOUSE_DOWN, leftMove); 
      left.removeEventListener(MouseEvent.MOUSE_UP, leftUp); 
      right.removeEventListener(MouseEvent.MOUSE_DOWN, rightMove); 
      right.removeEventListener(MouseEvent.MOUSE_UP, rightUp); 
      jumped= false; 
      wspeed = 0; 
      guy.gotoAndStop(1); 
      gotoAndStop(1,"level1Questions"); 



     } 

    } 

} 
/*function exitlevel2() 
{ 
    if (guy.hitTestObject(exit2MC)) 
    { 
     if (key.visible == false) 
     { 
      jumped= false; 
      wspeed = 0; 
      guy.gotoAndStop(1); 
      gotoAndStop(1,"level2Complete"); 



     } 

    } 

} 
*/ 
function enemy() 
{ 
    if (guy.hitTestObject(enemy1)) 
    { 
     guy.x = 520.95; 
     guy.y = 425.50; 
     if (lives<=1) 
     { 
      lives = 0; 
      gotoAndStop(1,"GameOver"); 
     } 
     else 
     { 
      lives--; 
      livesbox.text = lives.toString(); 
     } 

    } 
} 

function spikes() 
{ 
    if (guy.hitTestObject(Spike)) 
    { 
     guy.x = 520; 
     guy.y = 425.5; 
     if (lives<=1) 
     { 
      lives = 0; 
      gotoAndStop(1,"GameOver"); 
     } 
     else 
     { 


      lives--; 
      livesbox.text = lives.toString(); 
     } 
    } 
} 


function enemyMove():void 
{ 
    enemy1.x += enemySpeed; 
    if (enemy1.x >= 350) 
    { 
     enemySpeed *= -1; 
     enemy1.scaleX *= -1; 

    } 
    else if (enemy1.x < 60) 
    { 
     enemySpeed *= -1; 
     enemy1.scaleX *= -1; 

    } 
} 

幫助將不勝感激,謝謝。

+3

請看看這個問題右邊相關列的827個問題 - 他們會幫助你理解這個錯誤。 – Marty

回答

0

至少這一個變量爲空時pickup()函數執行:

  • 傢伙
  • 關鍵
  • COIN1
  • scorebox
  • COIN2
  • coin3
  • coin4

您可以使用trace()函數來檢查哪一個。

function pickup() 
{ 
    trace('guy==' + guy); 
    trace('key==' + key); 
    trace('scorebox==' + scorebox); 
    trace('coin1==' + coin1); 
    trace('coin2==' + coin2); 
    trace('coin3==' + coin3); 
    trace('coin4==' + coin4); 

    if (guy.hitTestObject(key)) 
    { 
     key.visible = false; 
    } 
    if (guy.hitTestObject(coin1)) 
    { 
     coin1.x = 2000; 
     score++; 
     scorebox.text = score.toString(); 
    } 
    if (guy.hitTestObject(coin2)) 
    { 
     coin2.x = 2000; 
     score++; 
     scorebox.text = score.toString(); 
    } 
    if (guy.hitTestObject(coin3)) 
    { 
     coin3.x = 2000; 
     score++; 
     scorebox.text = score.toString(); 
    } 
    if (guy.hitTestObject(coin4)) 
    { 
     coin4.x = 2000; 
     score++; 
     scorebox.text = score.toString(); 
    } 
} 
相關問題