Flash AS3 鍵盤事件

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

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


語法如下:

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)

2015-06-02 3:40 am
✔ 最佳答案
簡單回答,事情太多了
一般的碰撞偵測(hittestObject)就可以滿足你的需求了,
要專業一點的話可以參考Flash第三方物理引擎如NAPE,Box 2d
不規則碰撞 可以使用bitmapData,或是其他第三方類

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

2015-06-01 19:41:50 補充:
需要點擊一次畫面才可以正常執行,請問該如何解決呢?
這個可設定 focus 焦點
2015-06-01 9:55 pm
>>也請問要怎麼讓物件不會超過一個形狀外(類似牆壁的概念)
那個形狀是不規則形狀嗎?

如果只是個矩形很簡單
用 x y 座標判定即可

如果是不規則形狀, 我只知道用第三方寫的類別
http://blog.gskinner.com/archives/2005/10/source_code_sha.html
http://code.tutsplus.com/tutorials/pixel-level-collision-detection--active-10862
但我之前寫了個很悲劇的東西運行速度非常慢
我也不曉得是不是因為大量使用了此類別的緣故
也許你可以試試看

2015-06-01 14:02:23 補充:
希望有其他路過的人能解答_(:з」∠)_
我也想學一下


收錄日期: 2021-05-01 23:47:30
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20150531000016KK02912

檢視 Wayback Machine 備份