[問題] javascript 編程上一些小問題
js新手發問
最近寫js碰到了一個瓶頸
我想在canvas上用飛機射出子彈
目前是用setInterval讓飛機和子彈運行
以下代碼均是寫在setInterval的函數內
可是子彈發生了一些問題
因為我想讓子彈從飛機上發射
所以子彈drawImage的x,y座標是用飛機座標的相對位置
然後X軸再多加一個會持續增加的dx
子彈X=飛機X+100+dx;
dx=dx+8;
可是這樣每次飛機動子彈也會被牽動
如果將子彈的x,y座標放到setInterval外子彈射出的位置和飛機位置就會不一樣
請問一下該如何解決這個問題呢?
另外我是用空白鍵啟動子彈
當keydown時會啟動drawImage
但是不知道為什麼他只會啟動一次
也就是只能射出一發
該如何設出多發子彈呢?
謝謝幫忙
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 142.129.18.133
※ 文章網址: https://www.ptt.cc/bbs/Web_Design/M.1466756928.A.958.html
推
06/24 16:43, , 1F
06/24 16:43, 1F
推
06/24 17:21, , 2F
06/24 17:21, 2F
→
06/24 18:14, , 3F
06/24 18:14, 3F
→
06/24 18:25, , 4F
06/24 18:25, 4F
→
06/24 18:25, , 5F
06/24 18:25, 5F
謝謝大家給的建議
昨天想了很久還是想不出來該如何解
這邊貼出子彈的code
function draw(){
if (fireBullet == true){ //當按下空白鍵時會啟動
var bulletX = planeX + 100 + dx;
var bulletY = planeY + 55;
ctx.drawImage(bulletImg, bulletX, bulletY , 30, 15);
dx=dx+5;
}
}
setInterval(draw, 10);
如果想要取得按空白鍵當時飛機位置又不用到planeX 跟planeY該如何設定呢?
謝謝
※ 編輯: yenpaul (142.129.18.133), 06/25/2016 01:07:41
推
06/25 09:48, , 6F
06/25 09:48, 6F
→
06/25 09:50, , 7F
06/25 09:50, 7F
dx=dx+5我放裡面跑跟外面跑的結果都一樣耶...
子彈是如預期的速度往前的
但是現在在想要怎麼按空白鍵的瞬間從飛機上發射又不用用到飛機的座標
推
06/25 10:38, , 8F
06/25 10:38, 8F
→
06/25 10:38, , 9F
06/25 10:38, 9F
→
06/25 12:00, , 10F
06/25 12:00, 10F
※ 編輯: yenpaul (142.129.18.133), 06/25/2016 12:12:24
推
06/25 13:17, , 11F
06/25 13:17, 11F
→
06/25 13:17, , 12F
06/25 13:17, 12F
可是該如何設定子彈射出位置跟飛機一樣又不去用到飛機的座標呢?
※ 編輯: yenpaul (142.129.18.133), 06/25/2016 13:36:09
推
06/25 15:47, , 13F
06/25 15:47, 13F
→
06/25 15:47, , 14F
06/25 15:47, 14F
有沒有什麼方法是bulletX, Y第一次用planeX, Y當起始點
後面行進就變成bulletY = bulletY//Y軸不變, bulletX = bulletX+dx//X軸加速前進
如果是這樣code該如何改呢?
另外要如何每次按都觸發一個新的子彈呢?
謝謝幫忙
※ 編輯: yenpaul (142.129.18.133), 06/25/2016 16:08:47
推
06/27 00:47, , 15F
06/27 00:47, 15F
→
06/27 00:47, , 16F
06/27 00:47, 16F
→
06/27 00:47, , 17F
06/27 00:47, 17F
→
06/27 00:47, , 18F
06/27 00:47, 18F
Web_Design 近期熱門文章
PTT數位生活區 即時熱門文章