2015-03-19 200 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置于阶段来修复错误。