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

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

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

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

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

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

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

содержимым inna - не только с ограничивающим прямоугольником. Представьте
клип, который содержит несколько отдельных графических элементов или
фигур. Используя метод hitTest(), мы можем сказать, сталкивается ли точка
с любой из фи-к\р в этом клипе.
Ниже представлен синтаксис, использующийся для вызова этого типа
обнаружения столкновения.
myMovieClip.hitTest(х,у,true)
Ны могли бы сразу обратить внимание, что это идентично синтаксису для
обнаружения столкновения-между клипом и точкой, с одним изменением:
добавлен параметр true. Когда этот параметр установлен в true, метод
hitTest() проверяет на столкновение между точкой и содержимым клипа. Если
этого параметра нет Или если он установлен в false, то метод hitTest()
проверяет на столкновение ме-<*.ду точкой и ограничивающим
прямоугольником клипа.
Для просмотра соответствующего случаю примера откройте файл
puzzlepiece.fla в папке Chapter05. В сцене вы увидите клип с именем
экземпляра piece, содержащий фигуру части головоломки (пазла), в которой
белая пуля летит в моего кота. Код ActionScript в этом клипе просто
проверяет столкновение между курсором мыши и фигурой, когда происходит
нажатие кнопки мыши.
Часть 2 Исследование оснон
•ИНло -*1 >wn ¦ function () {
• ¦ t uit;
У ft 3 Q Г' * ;
I It .hitTest(mx, my, true)) { > <• ( "Meow! " ) ;
I h-pnau сiрока этого кода определяет функцию, которая будет вызываться,
когд: киянка мыши нажата. Когда эта функция вызвана, она устанавливает
две пер мснпые, как в наших предыдущих примерах, для сохранения позиции
курсо] мыши. Затем в строке 4 встречается условный оператор, который
проверяет, д ет ли true функция hitTest() для совпадения положения
курсора с клипом под н; званием piece. Если результат true, то
выполняется оператор trace, чтобы пок; зать вам, что обнаружено
столкновение.
Вы можете увидеть практическое применение этой методики в фай-q
puzzle_piece_drag.fla в папке Chapter05 на CD. В этом файле обнаруж ние
столкновения кодируется в точности, как и здесь; отличие заключи ется в
том, что вместо выдачи в качестве результата оператора trace пр нажатии
на фрагмент головоломки, фрагмент перетаскивается за курс| ром мыши до
тех пор, пока кнопка не отпущена.
I пава 5. Обнаружение столкновений
97
Обнаружение столкновений с применением математики
Как вы только что видели, использование метода hitTest() довольно
безболезненно. Я уже намекал, что применение кода для обнаружения
столкновения, основанного па математике, является более трудной задачей.
Так что это, вероятно, подходящее иремя сообщить вам, что создание этого
вида обнаружения столкновений гораздо чучше, чем попытка использовать
hitTest() для всех ваших нужд обнаружения столкновений. Давайте начнем с
перечисления ограничений hitTest().
Ограничения формы объекта. Как вы видели ранее в этой главе, метод
hitTest() работает только с ограничивающим прямоугольником клипа пли с
точкой и фигурой внутри клипа. Как бы вы обнаруживали столкновения между
двумя бильярдными шарами или между шаром и наклонной линией? С помощью
hitTest() обнаружение столкновения для этих ситуаций не могло бы быть
точным, потому что эта функция не обрабатывает обнаружение столкновений
между фигурами внутри двух клипов. Используя математику, мы можем создать
код обнаружения столкновений для нескольких фигур.
Запрет на независимость кода и графики. Эта концепция может быть трудна
для понимания. Во всех примерах, представленных далее в этой книге, мы
обновляем позицию клипа на экране перехватом его текущей позиции,
прибавлением к ней и затем изменением позиции клипа. Это наилучшая
практика для поддержания траектории в случаях, где объекты на экране
должны использоваться в коде. Например, у вас могла бы быть переменная,
которая хранит координату х шара. Когда пришло бы время обновить позицию
шара, используя скорость по х, вы прибавили бы значение к переменной,
которая хранит позицию по х, и затем установили бы позицию клипа на
экране из этой переменной. Это полезно, потому что мы можем обнаружить
столкновение до установки положения клипа в сцене. С методом hitTest()
объект должен быть физически перемещен на экране, и тогда имеет место
обнаружение столкновения, основанное па пересечении двух графических
элементов. Мы будем использовать в последующих главах независимый от
графики код.
Зависимость от скорости смены кадров. Это ограничение связано с
вышеприведенной причиной. Представьте игру типа тенниса: имеется ракетка
в 10 единиц шириной с левой стороны экрана. Шар, также шириной 10 единиц,
движется по направлению к ракетке по х со скоростью, равной - 30 единиц ш
кадр. Возможна ситуация, когда шар находится с правой стороны ракетки
4 234
98
Часть 2. Исследование основ
I • (ц.-м н.1 ipc и появляется с другой стороны ракетки в следующем
кадре. С по-- м hit Гewst() никакого столкновения не могло бы быть
обнаружено, потому
¦и ч | клипа должны пересекаться на протяжении кадра (или в пределах
Предыдущая << 1 .. 25 26 27 28 29 30 < 31 > 32 33 34 35 36 37 .. 210 >> Следующая