AS3: HitTest Any Object

社会主义新天地 提交于 2019-12-12 06:11:50

问题


I am working on an application where an image serves as cursor. Now i would like to know at any time over which object the cursor is hovering. Sort of like a HitTestObject(*) where i can then see what object the * represents. Does anyone have any idea how i could accomplish this? (and using the mouse is not an option)


回答1:


Put the elements you want to monitor for 'hovering' in a separate array, then add an onEnterFrame listener to the object attached to your mouse that iterates through the array and performs hitTests with each of the objects.

var hitTestClips:Array;
// populate hitTestClips with the items you want to hitTest

and this goes in the onEnterFrame handler for your mouse-attached object:

for(var item:MovieClip in hitTestClips)
{
  if(item.hitTest(this.x, this.y, true))
  {
    trace('now hovering above ' + item);
  }
}



回答2:


I have solved the problem already :) since the cursor was in a different sprite than the others, i had to do it this way, because i couldn't pass the objects to hover into an array.

        //First we will create a point that contains the x and y of this cursor.
        var _position:Point = new Point(x + (width/2), y + (height/2));

        //Secondly, we will get an array of elements that are under this point.
        var _objects:Array = parentApplication.getObjectsUnderPoint(_position);

        //If the length of the objectsList is longer than or equal to 2, we may assume that
        //there is an object
        if(_objects.length >= 2)
        {
            //Set the currentObject variable to the object the cursor is hovering over.
            //The minus two is simple. The cursor is always the last object under that point,
            //so we need the object before that.
            _currentObject = _objects[_objects.length - 2];

            //dispatch the event in the object.
            dispatchCursorEventToObject(EyeEvent.CURSOROVER);
        }


来源:https://stackoverflow.com/questions/5567602/as3-hittest-any-object

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!