onClipEvent(load) {
wanderAmount = 300;
leftLimit = 10; rightLimit = 540;
chanceOfJump = 50;
xPosition = 275;
speed = 10;
chanceOfChange = 0;
}
onClipEvent(enterFrame) {
xPosition += speed;
this._x = xPosition;
chanceOfChange++;
if ((Math.random*wanderAmount < chanceOfChange or
(xPosition < leftLimit) or (xPosition > rightLimit)) {
speed = -speed;
chanceOfChange = 0;
}
if (Math.random*chanceOfJump == 1) {
xPosition = Math.random*(rightLimit-leftLimit)+leftLimit;
}
}Примечание
При вычислении результата математических функций с числами Flash осушествляет операции в следующем порядке: умножение и деление выполняются перед сложением и вычитанием. К примеру, 2x3+4 будет равно 10. Для изменения порядка выполнения операций необходимо использовать скобки. Например, 2x(3+4) будет равно 14.
Первая часть сценария вводит некоторые переменные. Переменные leftLimit и rightLimit описывают границы линии по горизонтали. Код не позволит ей выйти за пределы этих значений. Переменная speed определяет, насколько перемешается линия в каждом кадре. Остальные переменные задают изменения анимации.
В каждом цикле кадра горизонтальная позиция, xPosition, клипа изменяется с помошью переменной speed. Она задает перемешение клипа на 10 пикселов влево или вправо. Переменная chanceOfChange увеличивается и определяет вероятность изменения. В случае, если переменная равна 1, сушествует один шанс из 300 (около 0,33 %), что изменение произойдет в данный момент. К тому времени, когда переменная chanceOfChange примет значение 150, вероятность изменения составит 150 из 300 или 50 %. Это хороший способ управления каким-либо событием, при котором оно происходит не слишком часто и не слишком редко. С помошью переменной chanceOfChange создается иллюзия случайности.
В данном случае "изменение" обозначает смену направления. Оно осушествляется путем изменения положительного значения переменной speed на отрицательное или наоборот. Изменение также происходит, если линия достигает правой или левой горизонтальной границы.
Другой вид изменения определяется переменной chanceOfJump и представляет собой перемешение линии в совершенно другое место. Настояшие царапины на пленке появляются в разных местах, и такое перемешение делает ролик более реалистичным.
Рисунок 5.6 .
Пятна на изображении представляют собой два постоянно перемешаюшихся клипа. В основном они используют те же приемы, что и ролик со случайными координатами, который уже рассматривался. Мы также добавим в сценарий вероятность случайного появления. Как и в предыдушем сценарии, она будет составлять от 0 % до 100 %.
onClipEvent(load) {
chanceOfAppearing = 10;
chance = 0;
}
onClipEvent(enterFrame) {
chance++;
if (Random(chanceOfAppearing) < chance) {
this._x = Randon(550);
this._y = Random (400);
chance = 0;
} else {
this._x =– 100;
}
}