[問題] javascript 編程上一些小問題

作者: yenpaul (Paul)   2016-06-24 16:28:45
js新手發問
最近寫js碰到了一個瓶頸
我想在canvas上用飛機射出子彈
目前是用setInterval讓飛機和子彈運行
以下代碼均是寫在setInterval的函數內
可是子彈發生了一些問題
因為我想讓子彈從飛機上發射
所以子彈drawImage的x,y座標是用飛機座標的相對位置
然後X軸再多加一個會持續增加的dx
子彈X=飛機X+100+dx;
dx=dx+8;
可是這樣每次飛機動子彈也會被牽動
如果將子彈的x,y座標放到setInterval外子彈射出的位置和飛機位置就會不一樣
請問一下該如何解決這個問題呢?
另外我是用空白鍵啟動子彈
當keydown時會啟動drawImage
但是不知道為什麼他只會啟動一次
也就是只能射出一發
該如何設出多發子彈呢?
謝謝幫忙
作者: ian90911 (xopowo)   2016-06-24 16:43:00
請貼code
作者: devil115789 (味噌湯好喝)   2016-06-24 17:21:00
感覺是因為dx會被清掉 所以dx永遠都是8這樣 我猜的
作者: ssccg (23)   2016-06-24 18:14:00
子彈X不是=飛機X+...,是等於發射時的飛機X+...
作者: akccakcctw (947)   2016-06-24 18:25:00
按下空白鍵時取得當時飛機位置,子彈和飛機不要用相對位置
作者: ccvs (kisS x Sis)   2016-06-25 09:48:00
邏輯怪怪的 dx的增減要獨立出來吧你現在是按下空白鍵 dx+=5 只會run一次啊
作者: xdraculax (首席怪叔叔)   2016-06-25 10:38:00
只有擊發時初始座標參考飛機,之後移動都參考自己座標,或是把子彈改成雷射(誤
作者: bibo9901 (function(){})()   2016-06-25 12:00:00
樓上XDD
作者: ccvs (kisS x Sis)   2016-06-25 13:17:00
比較普遍的方法是寫一個子彈的物件 內建迴圈去增加dx按下空白鍵時新建子彈物件你指的是子彈初始位置吧 draw的方法一樣在子彈的物件裡啊把飛機當前的座標傳進來當初始位置
作者: Hevak (Arthow Eshes)   2016-06-27 00:47:00
子彈是直線運動的話,你的每一個子彈物件都包含子彈座標X和Y,還有速度X和Y(射出時先算出來),等四項屬性的話,只要setInterval選取所有子彈,各自加各自各自的速度XY就好了吧,不需要去顧慮飛機的位置在哪

Links booklink

Contact Us: admin [ a t ] ucptt.com