js中setInterval的问题

functionHero(x,y,direct,color){//下面两句话的作用是通过对象冒充,达到继承的效果this.tank=Tank;this.tank(x,y,... function Hero(x,y,direct,color){

//下面两句话的作用是通过对象冒充,达到继承的效果
this.tank=Tank;
this.tank(x,y,direct,color);

//增加一个函数,射击敌人坦克.
this.shotEnemy=function(){

//创建子弹, 子弹的位置应该和hero有关系,并且和hero的方向有关.!!!
//this.x 就是当前hero的横坐标,这里我们简单的处理(细化)

switch(this.direct){
case 0:
heroBullet=new Bullet(this.x+9,this.y,this.direct,1);
break;
case 1:
heroBullet=new Bullet(this.x+30,this.y+9,this.direct,1);
break;
case 2:
heroBullet=new Bullet(this.x+9,this.y+30,this.direct,1);
break;
case 3: //右
heroBullet=new Bullet(this.x,this.y+9,this.direct,1);
break;
}

//把这个子弹对象放入到数组中 -> push函数
heroBullets.push(heroBullet);
//调用我们的子弹run, 50 是老师多次测试得到的一个结论., 这里技术难度比较大.
//就算你工作过1-2年,你也未必想到, 下面启动方式,每个子弹的定时器是独立,如果按原来的方法
//则所有子弹共享一个定时器.
var timer=window.setInterval("heroBullets["+(heroBullets.length-1)+"].run()",50);
//把这个timer赋给这个子弹(js对象是引用传递!)
heroBullets[heroBullets.length-1].timer=timer;

}
这是一个网上的使用js制作坦克大战的游戏,但是这里设定子弹共享定时器的这句话看不明白了,尤其是[]里面的代码的意思,请高手指点!!!
展开
 我来答
寻梦生
推荐于2016-08-27 · TA获得超过179个赞
知道小有建树答主
回答量:581
采纳率:50%
帮助的人:453万
展开全部
//则所有子弹共享一个定时器.
var timer=window.setInterval("heroBullets["+(heroBullets.length-1)+"].run()",50);
heroBullets这个你可以理解为一个数组,[]中是下标

不知道你明白不,写个简单例子给你看看吧:

var heroBullets = {
0:{
run: function(){
alert(this.timer);
},
timer: 10
},
1:{
run: function(){
alert(1);
},
timer: 20
}
}
heroBullets[0].timer = 30;//这个是代表设置参数timer
heroBullets[0].run();//这个是代表调用其中的函数run
更多追问追答
追问
谢谢,能理解一点了。现在不太明白的地方就是,[]中heroBullets.length为什么要-1,还有前后两个加号是什么意思呢。再次拜谢!!!!
追答
你这是毫无基础啊。。。
加号是拼接字符串。。
-1是为了避免下标越界。。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式