Web_Design 板


LINE

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://webptt.com/cn.aspx?n=bbs/Web_Design/M.1466756928.A.958.html
1F:推 ian90911: 请贴code 06/24 16:43
2F:推 devil115789: 感觉是因为dx会被清掉 所以dx永远都是8这样 我猜的 06/24 17:21
3F:→ ssccg: 子弹X不是=飞机X+...,是等於发射时的飞机X+... 06/24 18:14
4F:→ akccakcctw: 按下空白键时取得当时飞机位置,子弹和飞机不要用相 06/24 18:25
5F:→ akccakcctw: 对位置 06/24 18:25
谢谢大家给的建议 昨天想了很久还是想不出来该如何解 这边贴出子弹的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
6F:推 ccvs: 逻辑怪怪的 dx的增减要独立出来吧 06/25 09:48
7F:→ ccvs: 你现在是按下空白键 dx+=5 只会run一次啊 06/25 09:50
dx=dx+5我放里面跑跟外面跑的结果都一样耶... 子弹是如预期的速度往前的 但是现在在想要怎麽按空白键的瞬间从飞机上发射又不用用到飞机的座标
8F:推 xdraculax: 只有击发时初始座标参考飞机,之後移动都参考自己座标 06/25 10:38
9F:→ xdraculax: ,或是把子弹改成雷射(误 06/25 10:38
10F:→ bibo9901: 楼上XDD 06/25 12:00
※ 编辑: yenpaul (142.129.18.133), 06/25/2016 12:12:24
11F:推 ccvs: 比较普遍的方法是写一个子弹的物件 内建回圈去增加dx 06/25 13:17
12F:→ ccvs: 按下空白键时新建子弹物件 06/25 13:17
可是该如何设定子弹射出位置跟飞机一样又不去用到飞机的座标呢? ※ 编辑: yenpaul (142.129.18.133), 06/25/2016 13:36:09
13F:推 ccvs: 你指的是子弹初始位置吧 draw的方法一样在子弹的物件里啊 06/25 15:47
14F:→ ccvs: 把飞机当前的座标传进来当初始位置 06/25 15:47
有没有什麽方法是bulletX, Y第一次用planeX, Y当起始点 後面行进就变成bulletY = bulletY//Y轴不变, bulletX = bulletX+dx//X轴加速前进 如果是这样code该如何改呢? 另外要如何每次按都触发一个新的子弹呢? 谢谢帮忙 ※ 编辑: yenpaul (142.129.18.133), 06/25/2016 16:08:47
15F:推 Hevak: 子弹是直线运动的话,你的每一个子弹物件都包含子弹座标X和 06/27 00:47
16F:→ Hevak: Y,还有速度X和Y(射出时先算出来),等四项属性的话,只要se 06/27 00:47
17F:→ Hevak: tInterval选取所有子弹,各自加各自各自的速度XY就好了吧, 06/27 00:47
18F:→ Hevak: 不需要去顾虑飞机的位置在哪 06/27 00:47







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:iOS站内搜寻

TOP