【问题标题】:hitTestObject not working properly AS3hitTestObject 无法正常工作 AS3
【发布时间】:2016-06-30 06:34:41
【问题描述】:

如何让物体相互检测到,而不必如此精确?目前,我正在处理的程序只允许在左上边缘准确匹配项目时进行匹配,但我没有使用 hitTestPoint,我使用了 hitTestObject。以下是我的代码。

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

【问题讨论】:

  • “不必如此准确”是什么意思?
  • 因为只有碰到左上边缘才能检测到其他物体,拖到其他地方时检测不到。
  • 尝试查看BitmapData.hitTest,这听起来像是您正在寻找的。​​span>
  • Bitmap hittesting in AS3的可能重复

标签: actionscript-3 drag-and-drop


【解决方案1】:

如果bin1item 都是DisplayObjects,我看不出它们是怎么做到的(DisplayObject 是一个基类,由MovieClip 和Sprite 等其他人扩展),那么你应该可以自己做一些快速而肮脏的计算。您提出问题的方式使我相信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 部分。希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2015-06-19
    • 2017-01-28
    • 1970-01-01
    • 2015-06-30
    • 1970-01-01
    • 2016-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多