Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Цуканов Б.И. "Время в психике человека" (Медицина)

Суворов С. "Танк Т-64. Первенец танков 2-го поколения " (Военная промышленность)

Нестеров В.А. "Основы проэктирования ракет класса воздух- воздух и авиационных катапульных установок для них" (Военная промышленность)

Фогль Б. "101 вопрос, который задала бы ваша кошка своему ветеринару если бы умела говорить" (Ветеринария)

Яблоков Н.П. "Криминалистика" (Юриспруденция)
Реклама

Секреты разработки игр в Macromedia Flash MX - Макар Дж.

Макар Дж. Секреты разработки игр в Macromedia Flash MX — М.: КУДИЦ-ОБРАЗ , 2004. — 608 c.
ISBN 0-201-77021-0
Скачать (прямая ссылка): sekretirazrabotkiigr2004.djvu
Предыдущая << 1 .. 32 33 34 35 36 37 < 38 > 39 40 41 42 43 44 .. 210 >> Следующая

нари-вать эту линию. Откройте файл draw_line.fla в папке Chapter05 на CD.
Вы мо-
< сте заметить, что в этом файле нет никаких клипов. Код
ActionScript, который ^держится в файле, строит объект, который
представляет свойства линии |ее наклон и отсечение по у), и затем рисует
линию, используя две функции. 1иже представлены первые несколько строк
кода ActionScript из этого файла, И' горые используются для построения
объекта.
1 _root.createEmptyMovieClip("clip", 1);
2 clip.lineStyle(0, 0x000000, 100);
3 1 i n e 1 = { } ;
4 linel.m = 1;
5 linel.b = 100;
11 первой строке мы просто создаем в сцене пустой клип. Линия,
которая будет на-
I исована с использованием этого кода ActionScript, будет изображена в
этом клипе.
(c)Хорошей практикой программирования будет создание клипа, содержащего
линии, нарисованные с помощью динамических средств рисования Flash.
Почему? Потому что это процедура делает более простой очистку -вы можете
просто удалить клип, когда необходимо. Например, если вы создаете
приложение (в котором динамическое создание линии является общей
практикой), то вы, по всей вероятности, пожелаете иметь функцию "очистки
экрана". Гораздо проще удалить один клип, содержащий все нарисованные
линии, чем удалять множество отдельных линий. Кроме того, если бы все
линии были нарисованы в основной шкале времени, то очистка была бы еще
более трудной.
Г строке 2 мы определяем стиль линии для клипа. Прежде чем мы сможем
нарисовать что-либо в клипе, мы сообщаем Flash, как мы хотели бы, чтобы
это было фисовано. Этот метод говорит клипу, что мы хотим линию толщиной
в волос
* iro эквивалентно нулю), цвет черный (имеющий шестнадцатеричное
значение хОООООО) и значение прозрачности, равное 100.
О Если вам интересно узнать больше о новом программном интерфейсе
рисования Flash MX (Application Programming Interface, API), изучите
раздел Dictionaiy из меню Help Flash.
I троки 3-5 создают объект под именем linel, который содержит
переменные т
| шя наклона линии) и Ъ (для отсечения по у).
1 function findY(line, х) (
2 var у = line.m*x+line.b;
3 return у;
4 }
116 Часть 2. Исследование осн о
5 function drawLine (line) (
6 //Choos e an x
7 var х = 300 ;
8 //Find the у
9 var у = findY (1 i n e , x ) ;
10 //Move the pen
11 cl ip. m oveTo(x, y) ;
12 //Choo se anoth e r x
13 var x = 0;
14 //Find the у
15 var у = findY ( line, x)
16 //Draw line
17 cl ip . 1 ineTo (x, y);
18 }
19 drawLine (linel) ;
Функция findY() была создана для вычисления координаты у для передаваемое
в качестве параметра объекта line и координаты х (используя уравнение ш
линии у =m*x+b). После этого, начиная со строки 5, мы используем функци|
drawLine(). Чтобы нарисовать линию, вам, конечно, нужны две точки, и э\
функция выбирает две координаты х, находя для них соответствующие коо
динаты у, и рисует линию между этой парой точек. В строке 11 вы видите мс
тод moveTo(). Этот метод используется для перемещения начальной позищ]
"пера" Flash в переданные в функцию координаты. (Перо Flash, иногда назы
ваемое виртуальным пером, представляет собой точку, которую вы не може1
увидеть, с координатами (0, 0), откуда Flash будет начинать рисование,
если в| вызываете методы рисования. Метод moveTo() лишь перемещает
положен! пера - без рисования линий.) Существует метод lineTo(), который
мы встреча! в строке 17, который обрабатывает рисование линии. Он рисует
лини из текущей позиции пера в точку с полученными координатами.
Завершающ; строка служит для вызова функции. Этот вызов функции передает
ссылЛ на объект linel в функцию drawLine(). Функция drawLine() затем
использует ссылку для доступа к информации об объекте.
Важно обратить внимание, что все линии имеют бесконечную длину, xo"J в
этом случае мы показываем только часть рассматриваемой линии. Часть л|!
нии называется отрезком линии.
ва 5. Обнаружение столкновений
117
9 )есечение линий
ке линии, которые не параллельны одна другой, пересекаются в некоторой
I чке, и любые две линии, которые имеют одинаковый наклон, являются
парал-
i 1ьными. Таким образом, для того, чтобы сказать, являются ли две
линии пере-ающимися, вы просто сравниваете их наклоны. Если наклоны не
равны,
¦ они пересекаются где-то в пространстве. В этом разделе мы будем
учиться определять, что координаты некоторых двух линий пересекаются.
Наклон1 *Наклону2; следовательно, они пересекаются в некоторой точке.
начала давайте найдем точку пересечения. Скажем, у нас есть две линии,
пред-
11 авленные уравнениями
у =ш1*х + Ы
| . ¦ ¦ < i . |.Ч " .
у =т2*х+Ь2
t точке, где эти две линии пересекаются, значение у (в уравнениях выше)
одинаково и х (в уравнениях выше) тоже одинаково. Со знанием этого мы
уравнива-:ч два уравнения и записываем:
ml*x + bl = гп2*х + Ь2
при решении относительно х получаем:
х = (b2 - b 1) / (ш1-гп2 )
снов
118 Часть 2. Исследование основ
Это координата х, в которой линии пересекаются. Для нахождения координаты
Предыдущая << 1 .. 32 33 34 35 36 37 < 38 > 39 40 41 42 43 44 .. 210 >> Следующая