这是代码:
var ctx = canvas.getContext('2d');
var chop1 = new Image();
chop1.src = "img/chopper.png";
var blt = new Image();
blt.src = "img/bullet.png"
var chopperX = 0;
var chopperY = 0;
var ascent = 2;
var limit = 500;
var start = null;
var bltX = 135;
function fire()
{
bltX +=ascent;
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.drawImage(blt,bltX,20 ,
chop1.width, chop1.height);
requestAnimationFrame(fire);
}
function up(){
chopperY-=ascent;
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.drawImage(chop1,0,chopperY ,
chop1.width, chop1.height);
requestAnimationFrame(up);
if(chopperY == 20){
setInterval(fire,1000)
}
if(chopperY == 0){
fly();
}
}
function fly() {
chopperY+=ascent;
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.drawImage(chop1,0,chopperY ,
chop1.width, chop1.height);
if (chopperY < limit) {
requestAnimationFrame(fly);
}
if(chopperY==limit){
up();
}
fly();
根据条件(chopperY == 20),“fire”方法是excute.But我想在这种特殊情况下同时调用“fire”和“fly”函数。有没有办法做到这一点?在此代码中,当“fire”方法执行时,“fly”方法自动停止。有什么方法可以解决这个问题吗?
答案 0 :(得分:1)
看起来你正在制作游戏。您应该使用事件侦听器。请参阅some examples here或keyboard examples。这将允许您将键盘操作连接到代码,它们应该同时运行。
答案 1 :(得分:0)
我不确定我是否理解正确但如果您的目标是将两个函数传递给setInterval
,那么可以通过将它们包装在匿名函数中来实现:
if(chopperY == 20){
setInterval(function () {
fire();
fly();
},1000)
}
这将每秒调用两个函数。但是,fire
函数将首先执行。