iT邦幫忙

0

JavaScript問題

想請問各位邦友,下面Javascript的作用,兩段都是鍵盤的設定嗎? 謝謝
第一段
var keysDown = {};

addEventListener("keydown", function (e) {
keysDown[e.keyCode] = true;
}, false);

addEventListener("keyup", function (e) {
delete keysDown[e.keyCode];
}, false);

第二段
var update = function (modifier) {
if (38 in keysDown) { // Player holding up
hero.y -= hero.speed * modifier;
}
if (40 in keysDown) { // Player holding down
hero.y += hero.speed * modifier;
}
if (37 in keysDown) { // Player holding left
hero.x -= hero.speed * modifier;
}
if (39 in keysDown) { // Player holding right
hero.x += hero.speed * modifier;
}

賽門 iT邦超人 1 級 ‧ 2013-06-23 00:24:09 檢舉
不是不認真, 只因時未到...讚拍手拍手
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

6
ted99tw
iT邦高手 1 級 ‧ 2013-06-21 20:35:48
最佳解答

第一段是鍵盤事件設定,第二段是每一個frame更新時,hero如何根據user的按鍵而更改位置。

看更多先前的回應...收起先前的回應...

不好意思,那請問一下,第一段為什麼只有設定keydown跟keyup,是指按下按鍵跟放開按鍵嗎?

我可以寄個JS檔請你幫我看一下嗎?大部份我有註解了(只是不知道對不對@@)
其他小小的部分,看不太懂。

外獅佬 iT邦大師 1 級 ‧ 2013-06-21 21:30:38 檢舉

汗...看到泰大這麼認真回答問題...真是有那麼一點...是很大一點...不習慣...Orz

ted99tw iT邦高手 1 級 ‧ 2013-06-21 21:35:04 檢舉

我也是到現在才知道..我這麼有深度....開心

temo iT邦新手 1 級 ‧ 2013-06-21 22:02:15 檢舉

最近亂很大,突然轉性了驚

la6972 iT邦好手 1 級 ‧ 2013-06-22 08:28:08 檢舉

keydown/keyup event.keyCode
Opera MSIE Firefox Safari Chrome Key presse _____________________________________________________
8 8 8 8 8 Backspace
9 9 9 9 9 Tab
13 13 13 13 13 Enter
16 16 16 16 16 Shift
17 17 17 17 17 Ctrl
18 18 18 18 18 Alt
19 19 19 19 19 Pause, Break
20 20 20 20 20 CapsLock
27 27 27 27 27 Esc
32 32 32 32 32 Space
33 33 33 33 33 Page Up
34 34 34 34 34 Page Down
35 35 35 35 35 End
36 36 36 36 36 Home
37 37 37 37 37 Left arrow
38 38 38 38 38 Up arrow
39 39 39 39 39 Right arrow

ted99tw iT邦高手 1 級 ‧ 2013-06-22 09:13:19 檢舉

sinclair107提到:
是指按下按鍵跟放開按鍵嗎?

ted99tw iT邦高手 1 級 ‧ 2013-06-22 09:17:17 檢舉

sinclair107提到:
我可以寄個JS檔請你幫我看一下嗎?大部份我有註解了

(1)JS有專區可發問。

(2)分段PO文發問為宜,多PO幾段沒關係,像此PO的長度就很清爽。

好的,那在請大大幫我看一下這邊的JS,謝謝
第一段
if (
hero.x <= (monster.x + 32)
&& monster.x <= (hero.x + 32)
&& hero.y <= (monster.y + 32)
&& monster.y <= (hero.y + 32)
) {
++monstersCaught;
reset();
}
};

第二段
var render = function () {
if (bgReady) {
ctx.drawImage(bgImage, 0, 0);
}

if (heroReady) {
ctx.drawImage(heroImage, hero.x, hero.y);
}

if (monsterReady) {
ctx.drawImage(monsterImage, monster.x, monster.y);
}

第三段
var main = function () {
var now = Date.now();
var delta = now - then;

update(delta / 1000);
render();

then = now;
};

ted99tw iT邦高手 1 級 ‧ 2013-06-22 09:44:20 檢舉

(1)請在JS專區用新PO發問
(2)要列出你的想法先

OK,謝謝

我要發表回答

立即登入回答