Я никогда не сталкивался с ситуацией, в которой мне потребовался код для обнаружения столкновения двух движущихся линий, поэтому мы рассмотрим лишь обнаружение столкновения для двух неподвижных линий. Для вас в данный момент не очевидно как – или где – может встречаться подобный вид обнаружения столкновения. Как активный участник многочисленных форумов пользователей Flash в Интернет, я часто вижу вопрос – как узнать, пересекаются ли две линии. Наиболее важное применение этого мы увидим в обнаружении столкновения окружности с линией. Один этап в процессе обнаружения столкновения окружности и линии состоит в проверке, пересекаются ли две линии.
Уравнение линии
Настало время снова вернуться к вашим занятиям в средней школе. Вы возможно помните это уравнение:
y =m*x+b
где m представляет собой коэффициент наклона линии, а b является точкой отсечения по y (местом, где линия пересекает ось y). Это уравнение для прямой линии. Наклон m определен как подъем линии вдоль оси y к ее протяженности вдоль x. Например, если линия идет под углом 45?, то ее подъем и протяженность равны, так что наклон равен 1. Если у вас линия близка к горизонтальной, то ее подъем меньше протяженности и, следовательно, наклон мал – намного меньше 1. Если линия точно горизонтальна, то ее подъем равен 0 и, следовательно, наклон также 0.
RISE
подъем
RUN
протяженность
Slope
наклон
Если вы знаете наклон и точку пересечения линии с осью y, то вы можете нарисовать эту линию. Откройте файл draw_line.fla в папке Chapter05 на CD. Вы можете заметить, что в этом файле нет никаких клипов. Код ActionScript, который содержится в файле, строит объект, который представляет свойства линии (ее наклон и отсечение по y) и затем рисует линию, используя две функции. Ниже представлены первые несколько строк кода ActionScript из этого файла, которые используются для построения объекта.
1 _root.createEmptyMovieClip("clip",1);
2 clip.lineStyle(0,0x000000,100);
3 line1 ={};
4 line1