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制作坦克大战的游戏,但是这里设定子弹共享定时器的这句话看不明白了,尤其是[]里面的代码的意思,请高手指点!!! 展开
//下面两句话的作用是通过对象冒充,达到继承的效果
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制作坦克大战的游戏,但是这里设定子弹共享定时器的这句话看不明白了,尤其是[]里面的代码的意思,请高手指点!!! 展开
展开全部
//则所有子弹共享一个定时器.
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
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是为了避免下标越界。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询