我想創建一個玩家對象的邊界,用箭頭鍵控制,在我的遊戲中使用主舞臺的高度和寬度。例如,一個測試點位於玩家對象的邊界框的頂部邊緣,以便當玩家對象的頭部接觸到舞臺的頂部邊緣時,玩家不能再向北移動。玩家對象通過使用Flash舞臺編輯器手動實例化到舞臺的中心,因此它將在程序啓動之前從中心開始。使用hitTestPoint()與舞臺對象創建對象的邊界
問題是,在程序開始時,我不能再用箭頭鍵向上或向下移動播放器對象,但我仍然可以左右移動它。其目的是讓玩家向北移動,直到玩家對象的頭部接觸主舞臺的頂部邊緣。下面的代碼:
package
{
public class Main_Playground extends MovieClip
{
var vx:int;
var vy:int;
public function Main_Playground()
{
init();
}
function init():void
{
//initialize variables
vx = 0;
vy = 0;
//Add event listeners
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUp);
addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
function onKeyDown(event:KeyboardEvent):void
{
if (event.keyCode == Keyboard.LEFT)
{
vx = -5;
}
else if (event.keyCode == Keyboard.RIGHT)
{
vx = 5;
}
else if (event.keyCode == Keyboard.UP)
{
vy = -5;
}
else if (event.keyCode == Keyboard.DOWN)
{
vy = 5;
}
}
function onKeyUp(event:KeyboardEvent):void
{
if (event.keyCode == Keyboard.LEFT || event.keyCode == Keyboard.RIGHT)
{
vx = 0;
}
else if (event.keyCode == Keyboard.DOWN || event.keyCode == Keyboard.UP)
{
vy = 0;
}
}
function onEnterFrame(event:Event):void
{
//Move the player
player.x += vx;
player.y += vy;
//determine top boundary
if (! stage.hitTestPoint(player.x, (player.y-(player.height/2)), true)){
player.y -= vy;
}
}
}
}
我已經使用其他方法成功,但我很好奇'hitTestPoint`如何工作。我已經將hitTestPoint的第三個參數設置爲false。玩家對象現在可以向北移動,而不是停在舞臺的邊緣,而是被與玩家對象高度相同的不可見屏障阻擋。在「hitTestPoint」的第二個參數中,我將`player.height`分爲4,而玩家對象在向北行進時會離開舞臺邊界。 – user701510 2011-12-15 08:26:39