循环延迟超时问题
Loop Delay Timeout Issue
我正在制作一款HTML5游戏,目前正在尝试制作一款能够在几秒钟内连续发射3枚炮弹的武器。所以基本上,一个3爆破突击步枪。
我第一次做了:
for(var i = 0; i < 3; i++){
player.bullets.push(bulletInstance);
}
player.shotBullet = true;
有效,但当然,弹丸是同时释放的,这意味着每次射击之间没有延迟。所以我尝试引入一个setTimeout函数:
setTimeout(function (){
i++;
if(i < 3){
var b = new Rectangle( player.x + (player.width / 2) - 4, player.y + (player.height / 2) - 4, 8, 8);
player.bullets.push(bulletInstance);
}
}, 1000)
player.shotBullet = true;
这也行不通。有人能指出我的问题吗?
一个简单的方法是:
for(var i = 0; i < 3; i++){
window.setTimeout( function(){ player.bullets.push(bulletInstance); }, i * 1000 );
}
这将初始化3个函数,每个函数根据你的逻辑发射子弹。
您可能需要创建单独的bulletInstance
实例。
如果有超过3个动作要做,我建议切换到setInterval()
代替。但在这样低的地区,setTimeout()
应该是好的
更具体地说明什么不起作用会有所帮助。在您的例子中,问题是setTimeout只运行一次。你应该在处理程序中创建一个新的settimeout调用,或者使用setInterval来代替(只是记住当你完成时要clearInterval,这样它就会停止)
可以使用jQuery中的delay()
相关文章:
- iOS Safari Javascript设置超时问题
- Selebyun爬网程序超时问题C#
- 是否从超时内开始间隔是一个问题
- 设置超时功能在 chrome 扩展程序弹出窗口.js问题
- 清除超时的问题
- 加载资源时出现 OpenTok JS 连接超时问题
- 设置超时问题
- 线程休眠和设置超时问题
- 超时时单击动态标签时出现问题
- 正在获取ice候选项收集的超时问题
- 超时和滚动问题
- 会话超时问题
- 在For循环上设置超时/延迟的问题
- 下拉菜单超时问题
- 会话超时有问题
- JQuery超时问题与mouseout函数
- 这个清除超时有什么问题?
- setTimeout问题,则没有超时
- 多个javascript超时-实时数据获取的问题
- 循环延迟超时问题