Объект под названием ball создан для хранения информации о ball1.
Функция создана для упрощения создания линий в сцене. Объект, созданный для каждой линии хранит информацию об этой линии.
Функция с именем getTempPositions() создана. Эта функция пока не требуется для тех задач, которые мы собираемся проделать с этим файлом. Однако, когда вы позднее добавите гравитацию и реакцию на столкновения, эта функция будет более полезна. Ее обязанность состоит в том, чтобы создать временное положение в памяти для всех движущихся объектов. Это делается, чтобы обратиться к обновлению положения под воздействием гравитационных, ветра или других внешних сил.
Функция под названием render() принимает временное положение каждого движущегося объекта и устанавливает в качестве реальной позиции. Это физически размещает клип на экране. В этом файле мы имеем лишь один движущийся объект, поэтому функция очень простая и короткая.
Функция под названием getFrames() обрабатывает обнаружение столкновения.
Функция под названием bankCollisionDetect() была создана для прохода в цикле по всем линиям на экране и вызова функции getFrames() для каждой линии.
Событие onEnterFrame вызывает getTempPositions(), bankCollisionDetect(), и render() в каждом кадре.
Теперь давайте посмотрим на функцию getFrame(). Эта функция делает несколько вещей:
1. Находит пересечение между траекторией шара и линией.
2. Находит положение, где шар должен быть в начале контакта.
3. Определяет точку контакта и сравнивает ее с границами отрезка линии.
4. Вычисляет количество кадров, через которое шар достигнет точки столкновения.
Шаги 3 и 4 не зависят один от другого, и в этой функции они меняются местами. Ниже приведен код ActionScript для шага 1.
1 function getFrames(tempLine,point){
2 //Шаг 1
3 var slope2 =point.ymov/point.xmov;
4 if (slope2 ==Number.POSITIVE_INFINITY){
5 var slope2 =1000000;
6 }else if (slope2 ==Number.NEGATIVE_INFINITY){
7 var slope2 =-1000000;
8 }
9 //Координата y пересечения траектории шара
10 var b2 =point