1、一秒发射一个子弹

一秒发射一个子弹,难点就在于如何控制帧频函数的调用频率?
我们可以通过变量计数的功能,来控制帧频函数的调用频率。

例如下面代码:

  1. var a = 0;
  2. app.ticker.add(animate);
  3. function animate() {
  4. if(a == 60){
  5. //相关代码
  6. a = 0;
  7. }
  8. a++;
  9. }

2、一秒创建一架敌机

示例

飞机创建多了,会使页面非常卡顿,所以当飞机超出屏幕范围后删除

var app = new PIXI.Application(500, 600);
document.body.appendChild(app.view);

var bg = new PIXI.Sprite.fromImage("res/bg_02.png");
app.stage.addChild(bg);

app.ticker.add(animate);
function animate(){
   createEnemy();
   moveEnemy();
}

var enemyList = [];
var ceFlag = 0;
function createEnemy(){
   if(ceFlag == 60){
       var enemy = new PIXI.Sprite.fromImage("res/enemy_04.png");
       enemy.anchor.set(0.5,0.5);
       enemy.x = Math.random()*500;
       enemy.y = -50;
       app.stage.addChild(enemy);
       enemyList.push(enemy);
       ceFlag = 0;
   }
   ceFlag++;
}

function moveEnemy(){
   for(var i=enemyList.length-1;i>=0;i--){
       var enemy = enemyList[i];
       enemy.y += 5;

       if(enemy.y > 650){
           app.stage.removeChild(enemy);
           enemyList.splice(i,1);
       }
   }
}

代码讲解

1、添加帧频函数

              app.ticker.add(animate);<br />function animate(){<br />createEnemy();<br />moveEnemy();<br />}<br />添加帧频函数,并通过帧频函数调用createEnemy()、moveEnemy()两个函数

2、定义createEnemy函数

var enemyList = [];
var ceFlag = 0;
function createEnemy(){
if(ceFlag == 60){
var enemy = new PIXI.Sprite.fromImage(“res/enemy_04.png”);
enemy.anchor.set(0.5,0.5);
enemy.x = Math.random()*500;
enemy.y = -50;
app.stage.addChild(enemy);
enemyList.push(enemy);
ceFlag = 0;
}
ceFlag++;
}
定义createEnemy函数,用于创建飞机
var ceFlag = 0:定义ceFlag变量,用于控制createEnemy函数调用的频率,每 1 秒调用 1 次

3、定义moveEnemy函数

function moveEnemy(){
for(var i=enemyList.length-1;i>=0;i—){
var enemy = enemyList[i];
enemy.y += 5;
if(enemy.y > 650){
app.stage.removeChild(enemy);
enemyList.splice(i,1);
}
}
}
定义moveEnemy函数,用于移动飞机