AS3: HitTest любой объект

Я работаю над приложением, в котором изображение служит курсором. Теперь я хотел бы знать в любое время, над каким объектом зависает курсор. Что-то вроде HitTestObject(*), где я могу увидеть, какой объект представляет *. Кто-нибудь знает, как я могу это сделать? (и использовать мышь не вариант)


person Michiel Standaert    schedule 06.04.2011    source источник
comment
Вам действительно нужно тестировать само изображение? Мышь все еще там, просто ее не видно. Вы можете нажать/навести курсор на это   -  person divillysausages    schedule 06.04.2011
comment
мыши там нет, вот в чем проблема;) я использую другой метод для управления изображением :)   -  person Michiel Standaert    schedule 06.04.2011
comment
как вы управляете курсором?   -  person divillysausages    schedule 06.04.2011
comment
ха-ха, тогда ладно :D. Я вижу, вы все равно исправили это, так что удачи!   -  person divillysausages    schedule 06.04.2011


Ответы (2)


Поместите элементы, которые вы хотите отслеживать для «зависания», в отдельный массив, затем добавьте прослушиватель onEnterFrame к объекту, прикрепленному к вашей мыши, который выполняет итерацию по массиву и выполняет hitTests с каждым из объектов.

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

и это происходит в обработчике onEnterFrame для вашего объекта, прикрепленного к мыши:

for(var item:MovieClip in hitTestClips)
{
  if(item.hitTest(this.x, this.y, true))
  {
    trace('now hovering above ' + item);
  }
}
person Timothy Groote    schedule 06.04.2011
comment
я пробовал это раньше, но не мог использовать его, потому что некоторые объекты не были дочерними элементами курсора :) все равно спасибо - person Michiel Standaert; 06.04.2011

Я уже решил проблему :), поскольку курсор находился в другом спрайте, чем другие, мне пришлось сделать это таким образом, потому что я не мог передать объекты для наведения в массив.

        //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);
        }
person Michiel Standaert    schedule 06.04.2011