И если точка движется достаточно быстро, она может пролететь через прямоугольник без обнаружения столкновения.
Логика обнаружения столкновения между точкой и прямоугольником проста. Положение точки сравнивается с положением каждой стенки прямоугольника. Если координата x точки больше чем координата x левой стенки и меньше чем координата x правой стенки прямоугольника, а координата y больше чем координата y верхней стенки (помните, что ось y во Flash имеет противоположное направление) и меньше чем координата y нижней стенки, то столкновение произошло.
RIGHT WALL
ПРАВАЯ СТЕНКА
LEFT WALL
ЛЕВАЯ СТЕНКА
TOP WALL
ВЕРХНЯЯ СТЕНКА
Point
Точка
BOTTOM WALL
НИЖНЯЯ СТЕНКА
Откройте файл point_rectangle.fla для просмотра примера. В сцене есть два клипа, point_clip1 и rectangle_clip1. Код ActionScript создает объект для хранения информации о точке и прямоугольнике. Затем, в каждом кадре точка перемещается и делается проверка на обнаружение столкновения. Ниже приводится код ActionScript, использованный для создания объектов.
1 //Создать объект для хранения информации о point_clip1
2 point1 ={};
3 point1.clip =point_clip1;
4 point1.x =point1.clip._x;
5 point1.y =point1.clip._y;
6 point1.xmov =3;
7 point1.ymov =1;
8 // Создать объект для хранения информации о rectangle_clip1
9 rectangle1 ={};
10 rectangle1.clip =rectangle_clip1;
11 rectangle1.x =rectangle1.clip._x;
12 rectangle1.y =rectangle1.clip._y;
13 rectangle1.width =rectangle1.clip._width;
14 rectangle1.height =rectangle1.clip._height;
До сих пор вы видели это уже много раз. Мы создаем объект для каждого клипа в сцене для хранения информации об этом клипе. Обратите внимание, что для прямоугольника мы храним его положение (его точка привязки находится в верхнем левом углу), а также его ширину и высоту. Далее в коде ActionScript есть две функции, одна для создания временного положения точки в памяти и другая для положения клипа в сцене