function newBalloon {
// Определяем, могут ли появиться новые шары.
if (nextBalloon < numBalloons) {
// Проверяем, пришло ли достаточно времени
// после появления последнего шара.
if (getTimer > nextBalloonTime) {
// "Бросаем монетку".
if (Math.Random<.5) {
// Создаем новый шар.
attachMovie("balloon", "balloon"+nextBalloon,
nextBalloon);
// Выбираем, с какой стороны
// и с какой скоростью полетит шар.
if (Math.Random<.5) {
_root["balloon"+nextBalloon]._x = -30;
dx = int(Math.Random*3)+3;
} else {
_root["balloon"+nextBalloon]._x = 580;
dx = -int(Math.Random*3)-3;
}
// Выбираем высоту.
_root["balloon"+nextBalloon]._y =
int(Math.Random*100)+20;
// Выбираем цвет.
balloonColor = new Color("balloon"+nextBalloon);
r = int(Math.Random*5)+1;
if (r == 1) {
balloonColor.setTransform({rb:255}) ;
} else if (r == 2) {
balloonColor.setTransform({gb:255}) ;
} else if (r == 3) {
balloonColor.setTransform({bb:255}) ;
} else if (r == 4) {
balloonColor.setTransform({rb:255,gb:255});
} else if (r == 5) {
balloonColor.setTransform({rb:255,bb:255});
}
// Добавляем новый шар.
balloons.push({clip:"balloon"+nextBalloon,d:dx});
// Изменяем значение переменных. nextBalloon++;
nextBalloon++;
nextBalloonTime = getTimer + 2000;
}
}
}
}Созданные шары перемещаются на определенное расстояние с помощью функции moveBalloons. Если шар достиг противоположной границы рабочего поля, его клип удаляется. Соответствующий элемент также удаляется из массива balloons.
Примечание
Чтобы быстро задать 50-процентную вероятность, лучше использовать фрагмент кода (Math.Random <.5). Функция Math.Random всегда принимает значение от 0 до 1,0 и никогда не бывает равна 1,0, поэтому условие <.5 дает 50-процентную вероятность возникновения некоторого события.
Совет
Имейте в виду, что в цикле for функции moveBalloons перечисление осуществляется в обратном порядке: начинается с последнего элемента в массиве balloons и заканчивается 0. Благодаря этому удаление элемента не влияет на остальную часть массива. Предположим, из массива, состоящего из пяти элементов, был удален третий элемент. Тогда четвертый элемент становится третьим, а пятый – четвертым. Если бы вы считали в прямом направлении, вы бы пропустили третий элемент и сразу перешли к четвертому. При счете в обратном порядке такой проблемы не возникает.
Функция moveBalloons проверяет, все ли шары созданы и все ли шары исчезли, что говорит об окончании игры.