创建对象池的代码如下:
如何使用
private var pool:SpritePool;
初始化 pool = new SpritePool(Bullet,10); //Bullet是一个子弹类
取出一个对象
var b:Bullet = pool.getSprite() as Bullet;
移除一个对象时
var b:Bullet = bullets[i];
pool.returnSprite(b);
import flash.display.DisplayObject;
public class SpritePool
{
private var pool:Array;
private var counter:int;
public function SpritePool(type:Class,len:int)
{
pool = new Array();
counter = len;
var i:int = len;
while (--i > -1)
{
pool[i] = new type();
}
}
public function getSprite():DisplayObject
{
if (counter > 0)
{
return pool[--counter];
}
else
{
throw new Error("You exhausted the pool!");
}
}
public function returnSprite(s:DisplayObject):void
{
pool[counter++] = s;
}
}
如何使用
private var pool:SpritePool;
初始化 pool = new SpritePool(Bullet,10); //Bullet是一个子弹类
取出一个对象
var b:Bullet = pool.getSprite() as Bullet;
移除一个对象时
var b:Bullet = bullets[i];
pool.returnSprite(b);