2015-03-19 191 views
0

我在Flash AS3中創建了一個非常簡單的遊戲,包括迷宮。下面的代碼:迷宮/迷宮遊戲

import flash.ui.Keyboard; 
import flash.events.Event; 
import flash.events.KeyboardEvent; 

oseba.addEventListener(Event.ENTER_FRAME, premik); 
oseba.addEventListener(Event.ENTER_FRAME, handleCollision) 
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); 
stage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler); 

var keys:Array = []; 

function keyDownHandler(e:KeyboardEvent):void{ 
    keys[e.keyCode] = true; 
} 
function keyUpHandler(e:KeyboardEvent):void{ 
    keys[e.keyCode] = false; 
} 

function premik(e:Event):void{ 
    if (keys[Keyboard.RIGHT])  { 
      oseba.x += 5; 
     } 
    if (keys[Keyboard.LEFT]) { 
     oseba.x -= 5; 
    } 
    if (keys[Keyboard.UP]) { 
     oseba.y -= 5; 
    } 
    if (keys[Keyboard.DOWN]) { 
     oseba.y += 5; 
    } 
} 


function handleCollision(e:Event):void{ 
    if(oseba.hitTestObject(nazaj)){ 
     gotoAndPlay(2,"igra"); 
    } 
    if(oseba.hitTestObject(gozd)){ 
     gotoAndPlay(2); 
} 

我想添加碰撞檢測,這將不允許我'oseba'是從走過無人盯防的地形走動。下面我創建了一個不可見的MC''potke''。我認爲最好的方法是計算''oseba''的下一個位置,如果'potke'''那麼''oseba''不能移動到那裏。我正在尋找合適的代碼示例,因爲我已經嘗試了幾個不同的代碼,但似乎沒有工作。

我還收到以下錯誤: TypeError:錯誤#1009:無法訪問空對象引用的屬性或方法。 在XYgame_fla :: MainTimeline/handleCollision()

一切似乎工作正常否則,但此錯誤不斷顯示。

+0

null對象是'nazaj'或'gozd',請檢查它。 – 2015-03-19 10:15:39

回答

0

我會嘗試使用nazaj.hitTestPoint(oseba.x,oseba,y,true),並將EventListener置於階段來修復錯誤。