在javascript中同时调用函数

时间:2014-01-16 06:24:39

标签: javascript html5

这是代码:

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”方法自动停止。有什么方法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

看起来你正在制作游戏。您应该使用事件侦听器。请参阅some examples herekeyboard examples。这将允许您将键盘操作连接到代码,它们应该同时运行。

答案 1 :(得分:0)

我不确定我是否理解正确但如果您的目标是将两个函数传递给setInterval,那么可以通过将它们包装在匿名函数中来实现:

if(chopperY == 20){
    setInterval(function () {
        fire();
        fly();
    },1000)
}

这将每秒调用两个函数。但是,fire函数将首先执行。