Есть иной способ использования метода hitTest(), и он состоит в том, чтобы обнаруживать столкновения между точкой и содержимым клипа – не только с ограничивающим прямоугольником. Представьте клип, который содержит несколько отдельных графических элементов или фигур. Используя метод hitTest(), мы можем сказать, сталкивается ли точка с любой из фигур в этом клипе.
Ниже представлен синтаксис, использующийся для вызова этого типа обнаружения столкновения:
myMovieClip.hitTest(x,y,true)
Вы могли бы сразу обратить внимание, что это идентично синтаксису для обнаружения столкновения между клипом и точкой, с одним изменением: добавлением параметра true. Когда этот параметр установлен в true, метод hitTest() проверяет на столкновение между точкой и содержимым клипа. Если этого параметра нет или если он установлен в false, то метод hitTest() проверяет на столкновение между тоской и ограничивающим прямоугольником клипа.
Для просмотра соответствующего случаю примера, откройте файл puzzle_piece.fla в папке Chapter05. В сцене вы увидите клип с именем экземпляра piece, содержащий фигуру части головоломки-пазла, в которой белая пуля летит в моего кота. Код ActionScript в этом клипе просто проверяет столкновение между курсором мыши и фигурой, когда происходит нажатие кнопки мыши.
1 _root.onMouseDown =function (){
2 mx =_xmouse;
3 my =_ymouse;
4 if (piece.hitTest(mx,my,true)){
5 trace("Meow!");
6 }
7 }
Первая строка этого кода определяет функцию, которая будет вызываться, когда кнопка мыши нажата. Когда эта функция вызвана, она устанавливает две переменных, как в наших предыдущих примерах, для сохранения позиции курсора мыши. Затем, в строке 4 встречается условный оператор, который проверяет, дает ли true функция hitTest() для совпадения положения курсора с клипом под названием piece. Если результат true, то выполняется оператор trace, чтобы показать вам, что обнаружено столкновение.
Вы можете увидеть практическое применение этой методики в файле puzzle_piece_drag