2011-08-23 4 views
1

PNG를 비트 맵으로 변환 한 다음이를 bitmapData로 변환했습니다.bitmapData와 객체간에 hitTest를 올바르게 사용하는 방법은 무엇입니까?

나는 _player이라는 개체가 있는데 충돌 탐지 기능을 추가하고 싶습니다. 그러나 제대로 작동하는 것처럼 보일 수 있습니다.

내 코드는 다음과 같습니다

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

bmd1 내 bitmapData입니다 _player 개체가 테스트 할 소원입니다. 나는 주위를 둘러 보았다했지만 내가

어떤 아이디어를 놓친 거지 어떤 인수 찾을 cannott

1136: Incorrect number of arguments, Expected 3 

:

나는 다음과 같은 오류는 무엇입니까?

내가없는 기쁨으로

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

을 시도

업데이트

업데이트 2

미안 해요, 난 나를 위해 이유는이 방법이 복용 언급해야 투명 영역이있는 PNG가있는 경우 col 나는 내가 PNG이이 방법

을 사용하고있다 왜 불투명 분야에서 lisions, 나는 나는 어쩌면이 완전히 잘못을하고 bitmapData

로 변환, 그것을 가져 와서 비트 맵으로 변환합니다. 문제가있는 곳을 제게 보여 주시겠습니까?

+1

hitmap은 BitmapData 객체에서 일반적인 표시 객체의 메소드와 조금 다릅니다. 대신 비트 맵에 대해 hitTest를 실행하지 않으시겠습니까? – shanethehat

답변

1

확인을 내 png 맵을 비트 맵 데이터로 변환 한 다음 hitTest를 사용하여 각 비트 맵의 ​​x와 y를 서로 비교합니다.

0

당신이 원하는 방법은하여 hitTestPoint()입니다하지 그러나 hitTest()

편집 : 으악 난 당신이 DisplayObject의 대신의 BitmapData에 대해 적중 테스트를하고 있다고 놓쳤다. BitmapData.hitTest()는 많은 상황에서 상당히 느린 픽셀 수준의 검색을 수행합니다. 당신은 스프라이트로의 BitmapData 퍼팅 후하여 hitTestPoint을 개시 아마 더 좋을 것 같아()

+1

BitmapData에 hitTestPoint 메소드가 없으므로 다른 DisplayObject와 약간 다릅니다. – shanethehat

+0

BitmapData를 스프라이트 내에 배치하면 문제가 해결됩니다. – Alex

+0

오, 그는 비트 맵 데이터에서 직접 적중 테스트를 실행하고 있습니까?이상 하네; BitmapData가있는 Sprite에서 히트 테스트를 실행합니다. 저는 일반적으로 BitmapData를 정적 이미지 정보로 취급하고 Sprite를 대화 형 객체로 취급합니다. – jhocking

6

그러나 hitTest 3 개 필수 인수가 있습니다

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

가 내 플레이어 무비 클립을 변환 결국 doc