당신이 효율적으로 CPU 사용량으로 픽셀 완벽한 충돌 감지하려면이 기능을 사용해보십시오 : 성공적인 예비 hitTestObject()
후
trace("Collided: " + (areaOfCollision(mc1, mc2) != null));
trace("Where: " + areaOfCollision(mc1, mc2));
function areaOfCollision(object1:DisplayObject, object2:DisplayObject, tolerance:int = 255):Rectangle {
if (object1.hitTestObject(object2)) {
var limits1:Rectangle = object1.getBounds(object1.parent);
var limits2:Rectangle = object2.getBounds(object2.parent);
var limits:Rectangle = limits1.intersection(limits2);
limits.x = Math.floor(limits.x);
limits.y = Math.floor(limits.y);
limits.width = Math.ceil(limits.width);
limits.height = Math.ceil(limits.height);
if (limits.width < 1 || limits.height < 1) return null;
var image:BitmapData = new BitmapData(limits.width, limits.height, false);
var matrix:Matrix = object1.transform.concatenatedMatrix;
matrix.translate(-limits.left, -limits.top);
image.draw(object1, matrix, new ColorTransform(1, 1, 1, 1, 255, -255, -255, tolerance));
matrix = object2.transform.concatenatedMatrix;
matrix.translate(-limits.left, -limits.top);
image.draw(object2, matrix, new ColorTransform(1, 1, 1, 1, 255, 255, 255, tolerance), BlendMode.DIFFERENCE);
var intersection:Rectangle = image.getColorBoundsRect(0xFFFFFFFF, 0xFF00FFFF);
if (intersection.width == 0) return null;
intersection.offset(limits.left, limits.top);
return intersection;
}
return null;
}
,이 기능은 backgroundly 다른 그린 두 개체의 모양에서 스냅 샷을 색상을 각각 섞은 다음 색상을 교차하여 새로운 색상으로 겹쳐서 결과 모양 인 Rectangle
을 반환합니다. 너무 멋지다.
당신이이 이름 중 하나를 다음 충돌 감지 구글 수픽셀 완벽한 충돌 감지에 대한 자세한 내용은 "액션 스크립트 남자", "트로이 길버트", "Boulevart (WIM)를 ","스키너 (gSkinner) "또는"Senocular ". 그 놈들은 AS3 레퍼런스를 굉장히 좋아합니다.
다음 항목을 확인해야합니다. http://active.tutsplus.com/sessions/collision-detection- and-reaction/ – davivid