Ну, я полагаю, есть несколько способов сделать это, но это зависит от того, как вы регистрируете события щелчка мышью. Если вы вызываете addEventListener (MouseEvent.Click, ...) для каждой из ваших пуль, чтобы в конечном итоге добраться до bottleHasClicked, вы можете просто удалить прослушиватель объекта, вызвав removeEventListener (...);
Если вы используете такой другой метод, другой простой способ сделать это - просто добавить логическое значение, чтобы проверить, была ли бутылка нажата (давайте назовем эту переменную wasClicked, и конструктор бутылки должен установить ее в false ). В этом случае вы можете изменить приведенный выше код на что-то вроде этого:
public function bottleHasClicked(bottle : BottleBase) : void
{
if(!bottle.wasClicked)
{
bottle.wasClicked = true;
bottle.mouseEnabled = false;
collectedBottles++;
bottlesInRound--;
gameSound.getShootSound().playSound();
gameSound.getBottleSound().playSound();
ArrayUtil.removeValueFromArray(elementsInScreenArray, bottle);
cleanElementsTimer[bottle].stop();
delete cleanElementsTimer[bottle];
if (bottlesInRound == 0) {
stopElementsTimer();
showElementsWaitForSeconds(0.5);
}
createBulletHole();
bottle.play();
}
}
Это должно сработать.