【问题标题】:Labyrinth/maze game迷宫/迷宫游戏
【发布时间】:2015-03-19 10:04:45
【问题描述】:

我正在用 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()

其他方面似乎一切正常,但此错误不断出现。

【问题讨论】:

  • 空对象是nazajgozd,检查一下。

标签: actionscript-3 flash adobe collision-detection


【解决方案1】:

我会尝试使用 nazaj.hitTestPoint(oseba.x, oseba,y, true) 并将 EventListener 放到舞台上以修复错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多