Flash AS3 鍵盤事件

我想要製作一個移動跳躍的遊戲,但是我選擇關卡後都不能直接移動,而是需要點擊一次畫面才可以正常執行,請問該如何解決呢?

也請問要怎麼讓物件不會超過一個形狀外(類似牆壁的概念)以及平台如何接住物件(就是讓物件可以站在平台上面)

語法如下:

const KEY_UP: uint = 38;

const KEY_DOWN: uint = 40;

const KEY_LEFT: uint = 39;

const KEY_RIGHT: uint = 37;

//------------------------

var speed: Number = 3;

//------------------------

stage.addEventListener(KeyboardEvent.KEY_DOWN, fl_KeyboardDownHandler_2);

function fl_KeyboardDownHandler_2(event: KeyboardEvent): void {

var code:uint = event.keyCode;

if (code == KEY_LEFT) {

box_mc.x += speed;

new Rectangle(mc_frame.x, mc_frame.y, mc_frame.width - box_mc.width, mc_frame.height - box_mc.height)

};

if (code == KEY_RIGHT) {

box_mc.x -= speed;

};

//if (code == KEY_UP) {

};

}

2 個解答

評分
  • 5 年前
    最佳解答

    簡單回答,事情太多了

    一般的碰撞偵測(hittestObject)就可以滿足你的需求了,

    要專業一點的話可以參考Flash第三方物理引擎如NAPE,Box 2d

    不規則碰撞 可以使用bitmapData,或是其他第三方類

    運行速度非常慢?? 沒遇過這種情形,我猜是程式沒優化好,可能一直跑Enter_Frame,或是一堆計時器 @@

    2015-06-01 19:41:50 補充:

    需要點擊一次畫面才可以正常執行,請問該如何解決呢?

    這個可設定 focus 焦點

    • 登入以對解答發表意見
  • 5 年前

    >>也請問要怎麼讓物件不會超過一個形狀外(類似牆壁的概念)

    那個形狀是不規則形狀嗎?

    如果只是個矩形很簡單

    用 x y 座標判定即可

    如果是不規則形狀, 我只知道用第三方寫的類別

    http://blog.gskinner.com/archives/2005/10/source_c...

    http://code.tutsplus.com/tutorials/pixel-level-col...

    但我之前寫了個很悲劇的東西運行速度非常慢

    我也不曉得是不是因為大量使用了此類別的緣故

    也許你可以試試看

    2015-06-01 14:02:23 補充:

    希望有其他路過的人能解答_(:з」∠)_

    我也想學一下

    • 登入以對解答發表意見
還有問題?馬上發問,尋求解答。