楼主:
yenpaul (Paul)
2016-06-24 16:28:45js新手发问
最近写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
感觉是因为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一次啊
只有击发时初始座标参考飞机,之后移动都参考自己座标,或是把子弹改成雷射(误
作者:
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就好了吧,不需要去顾虑飞机的位置在哪