Я работаю над приложением, в котором изображение служит курсором. Теперь я хотел бы знать в любое время, над каким объектом зависает курсор. Что-то вроде HitTestObject(*), где я могу увидеть, какой объект представляет *. Кто-нибудь знает, как я могу это сделать? (и использовать мышь не вариант)
AS3: HitTest любой объект
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
я пробовал это раньше, но не мог использовать его, потому что некоторые объекты не были дочерними элементами курсора :) все равно спасибо
- 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