0

我在star go中脱离屏幕时,无法删除我的敌人。一段时间后我会遇到性能问题,因为我的敌人阵列正在不断增长和增长。如何停止在starling中渲染屏幕精灵?

这是我的代码,使我的课程结束时,使敌人以及更新功能。

private function makeEnemies():void 
    { 
     enemySpawnCounter++; 

     if (enemySpawnCounter > enemySpawnDelay) 
     { 
      enemySpawnCounter = 0; 
      enemySpawnDelay -= difficultyRate; 
      difficulty += difficultyRate; 
      makeEnemy(); 
     } 
    } 

    private function makeEnemy():void 
    { 
     var i:int; 
     for (i = 0; i < Math.floor(difficulty); i++) 
     { 
      var newEnemy:Enemy = new SnowBall(); 

      newEnemy.x = 925; 
      newEnemy.y = Math.random() * 375 + 50; 
      //trace(newEnemy.x); trace(newEnemy.y); 
      newEnemy.xVel = (-Math.random() * difficulty) - 5; 
      newEnemy.sinMeter = Math.random() * 10; 
      newEnemy.bobValue = Math.random() * difficulty; 

      enemiesLayer.addChild(newEnemy); 
      enemies.push(newEnemy); 

      if (newEnemy.x <= 0) 
      { 
       enemies.splice(i, 1); 
       enemiesLayer.removeChild(newEnemy); 
      } 
     } 
    } 
private function update():void 
    { 
     trace(enemies.length, lasers.length); 

     for each (var enemy:Enemy in enemies) 
     { 
      enemy.update(); 
     } 

     for each (var laser:Laser in lasers) 
     { 
      laser.update(); 
      newHitTest(laser); 
     } 

     makeEnemies(); 
    } 

这里是我的敌人类...

package objects 
{ 
import starling.events.Event; 
import starling.display.Sprite; 
import objects.Laser; 

public class Enemy extends Sprite 
{ 
    public static const PURGE_EVENT:String = "ENEMY_PURGE"; 

    public var sinMeter:Number; 
    public var bobValue:Number; 
    public var status:String; 

    public var xVel:Number; 
    public var yVel:Number; 

    public function Enemy() 
    { 
     status = "OK"; 
     bobValue = 0.1; 
     sinMeter = 0; 
     xVel = 0; 
     yVel = 0; 
    } 

    public function destroy():void 
    { 
     status = "Dead"; 
     visible = false; 
    } 

    public function update():void 
    { 
     x += xVel; 
     y += yVel; 

     if (x < 0) 
     { 
      trace("Dispatching Enemy Escaped!"); 
      dispatchEvent(new Event(Laser.PURGE_EVENT, true, false)); 
     } 
    } 
} 
} 

任何人都知道如何解决这个问题?

回答

1

检测它们是否触摸屏幕,我从未使用过椋鸟,但我认为可能会有某种碰撞检测,因此请制作与屏幕保持一致的屏幕尺寸的矩形或表面,然后画出与该表面相撞的敌人。