Скорее мы собираемся сосредоточиться на областях, где используются реакции на столкновения. Если вы прочитали предыдущие главы по обнаружению столкновения и физике, то вы знакомы с большей частью содержимого кода ActionScript в этом файле. Что может быть новым для вас, так это две вещи:
1. Метод game.gameAI() (который будет рассмотрен в Главе 9).
2. Манера, в которой методы были созданы. Все методы были созданы непосредственно в объекте game, вместо создания в шкале времени. Это не является необходимостью, но подводит нас ближе к кодированию в объектно-ориентированном стиле.
Функция, которая принадлежит объекту, называется методом. Это просто изменение в терминологии; в действительность нет никакой существенной разницы между двумя названиями. Подобно многим людям, чей первый язык программирования был ActionScript, я часто использую терминологию некорректно. Я иногда говорю «метод», когда должен сказать «функция», или как-то иначе. Не был Шекспиром, кто сказал, «То, что мы называем функцией, осталось бы той же обработкой данных с другим именем»?
В этом конкретном файле реакция на столкновение осуществляется в каждом месте, где находится скрипт обнаружения столкновения. Мы делаем проверку на столкновения в методах game.checkForWalls() и game.checkPaddleCollisions(). Ниже приведен код ActionScript для метода game.checkForWalls():
1 game.checkForWalls =function(){
2 if (this.ball.tempy<0){
3 //попадание в верхнюю стену
4 this.ball.tempy =0;
5 this.ball.ymov *=-1;
6 }else if (this.ball.tempy+this.ball.radius>this.height){
7 //это нижняя стена
8 this.ball.tempy =this.height-this.ball.radius;
9 this.ball.ymov *=-1;
10 }
11 };
Если вы помните из предыдущих глав, мы обычно создаем временные координаты в памяти, описывая, где будет объект, tempx и tempy. Мы используем эти временные координаты для проверки на столкновения. Верхняя граница игрового поля имеет координату 0; нижняя граница равна game