Как правильно использовать hitTest между bitmapData и объектом? - PullRequest
1 голос
/ 23 августа 2011

Я преобразовал PNG в растровое изображение, а затем преобразовал его в bitmapData.

У меня есть объект с именем _player, и я хочу добавить обнаружение столкновений, однако я могу заставить его работать.

мой код:

if(bmd1.hitTest(new Point(_player.x, _player.y))){
trace("hit");
}

bmd1 - это мой bitmapData, _player - объект, с которым требуется проверить.

Я получаю следующую ошибку:

1136: Incorrect number of arguments, Expected 3

Я оглянулся, но не могу найти аргумент, который мне не хватает

Есть идеи?

Обновление

Я пытался

if(bmd1.hitTest(new Point(_player.x, _player.y), 50, _player)){
trace("hit");
}

без радости

Обновление 2

Извините, я должен упомянуть, что я выбрал этот подход из-за того, что у меня есть PNG с прозрачными областями, мне нужно проверить наличие коллизий в непрозрачных областях, поэтому я использовал этот подход

У меня есть PNG, я импортирую его и преобразую в растровое изображение, затем преобразую в bitmapData

Возможно, я делаю это совершенно неправильно. Не могли бы вы показать мне, в чем проблема?

Ответы [ 3 ]

6 голосов
/ 23 августа 2011

hitTest имеет 3 обязательных аргумента:

public function hitTest(firstPoint:Point, firstAlphaThreshold:uint, secondObject:Object, secondBitmapDataPoint:Point = null, secondAlphaThreshold:uint = 1)

Проверьте doc

1 голос
/ 26 августа 2011

В конце концов я преобразовал свой мувиклип плеера в растровые данные, преобразовал мою PNG-карту в растровые данные, а затем с помощью HitTest проверил значения x и y каждого растрового изображения друг против друга

0 голосов
/ 23 августа 2011

Вы хотите использовать метод hitTestPoint (), а не hitTest ()

РЕДАКТИРОВАТЬ: упс, я пропустил, что вы выполняли тест на удар по BitmapData вместо DisplayObject. BitmapData.hitTest () выполняет обнаружение на уровне пикселей, которое довольно медленно во многих ситуациях. Возможно, вам лучше поместить BitmapData в Sprite, а затем использовать hitTestPoint ()

...