2016-06-30 50 views
-1

如何让对象互相检测而不必如此精确?目前,我正在处理的程序只允许在左上角精确匹配项目时进行匹配,但我没有使用hitTestPoint,我使用了hitTestObject。以下是我的代码。hitTestObject无法正常工作AS3

if (bin1.hitTestObject(item)){ 
     updateShape(item, bin1); 
+0

你是什么意思,“不必如此精确?” –

+0

,因为它只能检测到其他物体,当它碰到左上角时,它不能检测到它拖到其他地方的时间。 – CHIGGAJX

+0

[AS3中的位图命中测试]可能的重复(http://stackoverflow.com/questions/13046930/bitmap-hittesting-in-as3) –

回答

1

如果bin1item都的DisplayObject,我不明白他们怎么会不(的DisplayObject是可以被一帮其他类似影片剪辑和雪碧的扩展一个基类),那么你应该能够只是自己做一点快速和肮脏的计算。你提到问题的方式让我相信bin1item的起源在左上方,所以你应该可以使用这段代码来看看它们所居住的整个矩形是否正在打中,哪些不是全部如果对象旋转准确,但它听起来就像是你要找的东西差不多:

if(Math.abs((bin1.x+bin1.width/2)-(item.x+item.width.2)) < bin1.width/2 + item.width/2 && 
    Math.abs((bin1.y+bin1.height/2)-(item.y+item.height/2)) < bin1.height/2 + item.height/2) 
     updateShape(item,bin1); 

如果它们的起源实际上不是在左上角和居中,删除所有.width/2.height/2零件圆括号中的.x.y部分。希望这有助于!