Я думаю, что пул должен выпустить мяч, отдавая его обратно. Это не список со всеми вами шарами (извините), но это список с шарами, которые вы не используете в данный момент. Таким образом, ваша getBall()
функция должна вернуть новый Ball и удалить ссылку из STOREDBALLS. Лучший способ сделать это - использовать pop()
или shift()
, который удаляет последний элемент из массива и возвращает значение этого элемента.
Ваш счетчик неверен (это всегда 0
?) И не должен использоваться таким образом.
Я бы сделал это так:
public function getBall($position:Point, $vector:Point, $gravity:int, $friction:Number):Ball {
if (STOREDBALLS.length) {
// grab ball from list + remove it
var ball:Ball = STOREDBALLS.pop();
// reset its values
ball.position = $position;
ball.vector = $vector;
ball.gravity = $gravity;
ball.friction = $friction;
return ball;
}
return new Ball($position, $vector, $gravity, $friction);
}
КСТАТИ; Похоже, вы пришли из PHP фона. В ActionScript 3 никто не использует знаки доллара, вам не нужно их использовать.
Обновление: чтобы снова толкнуть мяч в бассейн, вы можете использовать эту функцию:
public function addBall($ball:Ball):void {
STOREDBALLS.push($ball);
}
В вашем классе, где вы используете пул, вы должны использовать removeChild()
или addChild()
, обработка списка отображения не является обязанностью класса пула.