개체간에 히트를 탐지하는 데는 여러 가지 방법이 있습니다. 의 당신이 표시 객체 (DO1 및 DO2) 모든
먼저 DO1이 있다고 가정 해 봅시다. hitTestObject (do2). 이 방법은 매우 빠르며 직사각형 객체에서 잘 작동합니다. 직사각형 객체를 회전하거나 직사각형 객체 이외의 다른 객체와 함께 사용하면 시각적으로 "거짓"결과를 얻을 수 있습니다.
다음으로 do1이 있습니다. hitTestPoint (do2.x, do2.y, shapeFlag) 이 메서드는 느리지 만 더 정확합니다. 특히 shapeFlag를 true로 설정하면 더욱 정확합니다. 단일 점 (x & y 좌표)에 대해 히트를 테스트합니다.
이 당신이 BitmapData 객체를 사용하여 암시 세 번째 방법 (그러나 hitTest) 인 그 더욱 정확하고 공정에 BitmapData 클래스의 특정,하지만 훨씬 어렵습니다 (투명 픽셀을 무시 할 수있는).
네 번째 옵션은 적중 감지의 사용자 지정 구현을 수행하는 것이지만 여기서 자세히 설명하는 것처럼 보입니다.
코드를 살펴보면 1 초 타이머 개체를 만들고 시작한 다음 targetTimeStartNow 함수를 사용하여 수신기를 추가하는 것을 볼 수 있습니다. 이 함수에서 대상을 개체를 dummyS 개체의 동일한 위치로 이동 한 다음 targetTimeStart Timer 개체를 중지합니다. 즉, 해당 기능에 항목이 하나만 있음을 의미합니다. 두 통화 가 감지 추적해야하지만
은 기능 즉, 사용자 코드에서 호출되지 않습니다 보인다 감지합니다.
작성한 첫 번째 감지 기능은 hitTestPoint 버전을 모방합니다.
function detect(): void {
if ((target.x == dummySX) && (target.y == dummySY)) {
trace("DETECTED");
}
}
이와 동일합니다
function detect():void {
if(target.hitTestPoint(dummySX, dummySY, false)) {
trace("DETECTED");
}
}
합니다 (물체의 모양, 그리고 자신의 경계 상자 사용하기 위해)이 변형을 사용하는 것이 좋을 것 :
을
function detect():void {
if(target.hitTestPoint(dummySX, dummySY, true)) {
trace("DETECTED");
}
}
두 번째 감지 기능은 hitTestObject를 사용하며 정상입니다.명시 적으로 사용할 수 있습니다 == true :
function detect(): void {
if(target.hitTestObject(dummyS)) {
trace("DETECTED");
}
}
유일한 것은 코드에서 실행하여 실행되도록하는 것입니다. 대상 개체가 이동 된 후에 그래서 어딘가 단지 추가 :
detect();
를 필요에 따라, 당신은 targetTimeStartNow 방법에 추가 (또는는 enterFrame 리스너를 추가하거나 다른 타이머 객체를 생성) 수 :
function targetTimeStartNow(e: TimerEvent): void {
target.x = dummySX;
target.y = dummySY;
targetTimeStart.stop();
detect();
}
'hitTest' 옵션을 살펴보십시오. –