О, я просветлел. Ваш вариант, похоже, действительно выполняет роль пула. Но как >_<
1. Вы перекидываете элементы, которые удалили в конец списка
2. Если надо добавить на экран объект, то вы производите интересное сравнение:

Код AS3:
public function fn_fire_up(_x, _y, _rotation): void {
if (gl_variable.index_bullet == vectorBullet.vectorPool.length) {
vectorBullet.fn_add_pool();
fn_fire_up(_x, _y, _rotation); //рекурсия
} else {
vectorBullet.vectorPool[gl_variable.index_bullet].x = _x;
vectorBullet.vectorPool[gl_variable.index_bullet].y = _y;
vectorBullet.vectorPool[gl_variable.index_bullet].rotation = _rotation;
_stage.addEventListener(Event.ENTER_FRAME, vectorBullet.vectorPool[gl_variable.index_bullet].fn_speed)
_stage.addChild(vectorBullet.vectorPool[gl_variable.index_bullet]);
++gl_variable.index_bullet;
}
}
Здесь не очевидно почему vectorBullet.vectorPool[gl_variable.index_bullet] - это Bullet, который сейчас не на экране, хотя, наверно, оно так и есть O_o
Кстати, это можно свести к коду ниже? Тут же рекурсия один раз только срабатывает?

Код AS3:
public function fn_fire_up(_x, _y, _rotation): void {
if (gl_variable.index_bullet == vectorBullet.vectorPool.length) {
vectorBullet.fn_add_pool();
}
vectorBullet.vectorPool[gl_variable.index_bullet].x = _x;
vectorBullet.vectorPool[gl_variable.index_bullet].y = _y;
vectorBullet.vectorPool[gl_variable.index_bullet].rotation = _rotation;
_stage.addEventListener(Event.ENTER_FRAME, vectorBullet.vectorPool[gl_variable.index_bullet].fn_speed)
_stage.addChild(vectorBullet.vectorPool[gl_variable.index_bullet]);
++gl_variable.index_bullet;
}
3. Вы используете список пула чтобы реализовывать логику вашего приложения. Всё в одной куче, и поэтому у вас много проверок в цикле

Код AS3:
var i = vectorBullet.vectorPool.length;
while (--i > -1) {
if (vectorBullet.vectorPool[i] != null) {
if (vectorBullet.vectorPool[i].stage != null) {
Ещё какие-то поля индексов у пуль, они же нужны только для работы с пулом, угадал?
Заключение:
Если хотите поубавить лишней логики в коде:
- попробуйте его написать без пула
- потом добавить в места создания объекта вызов метода пула и в места удаления со сцены вызов другого метода пула (простому пулу больше 2-х методов не надо)
Просто реально код мог бы быть раза в 2 проще, если с индексами не баловаться