[问题] 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