English Version            Русская версия

 [ Разделы сервера ]  [ Карта сервера ]  [ Новости сервера ] [ Обратная связь ]



Оно возникает при обнаружении независимого от кадров столкновения между окружностью и линией. Этот случай рассматривается подробно в следующем разделе. Линии пересекаются, но отрезки не пересекаются; следовательно, столкновения нет Линии пересекаются, также как и отрезки; следовательно, столкновение произошло Откройте файл line_segments_intersecting.fla в папке Chapter05. После определения объектов, которые представляют линии в этом файле, мы добавляем две переменных, x1 и x2, которые ограничивают отрезок линии. Я изменил функцию drawLine() из аналогичной в предыдущем файле примера таким образом, что она получает координаты границ x1 и x2 каждой линии и вычисляет на основании них координаты границ y1 и y2. Ниже представлена измененная функция drawLine(). 1 function drawLine(line){ 2 //Выбрать x 3 var x =line.x1; 4 //Найти y 5 var y =findY(line,x); 6 line.y1 =y; 7 //Переместить перо 8 clip.moveTo(x,y); 9 //Выбрать другой x 10 var x =line.x2; 11 //Найти y 12 var y =findY(line,x); 13 line.y2 =y; 14 //Нарисовать линию 15 clip.lineTo(x,y); 16 } В этой функции мы перемещаем перо к одной границе и затем рисуем линию до другой границы. Результатом является визуальное представление отрезка линии. После того как функция вызвана, объект line содержит координаты x и y для обеих границ отрезка линии. Перед вызовом этой функции, объект line содержит лишь координаты границ x1 и x2. Координаты границ y1 и y2 вычисляются в этой функции в строках 5 и 12, и затем сохраняются в объекте line в строках 6 и 13. Функция findIntersection() также имеет важное дополнение для наших текущих задач – она теперь проверяет, находится ли точка пересечения в пределах отрезков обеих линий. Эта функция приведена ниже. 1 function findIntersection(line_a,line_b){ 2 var x =(line_b.b-line_a.b)/(line_a.m-line_b.m); 3 var y =line_a.m*x+line_a.b; 4 dot._x =x; 5 dot
Hosted by uCoz