воскресенье, 18 июля 2010 г.

Определения нахождения мыши над сценой в AS2 (аналог MOUSE_LEAVE)

Для старого проекта написанного на ActionScript2 понадобилось определять находится ли мышь над флешкой или уже покинула область flash.
В AS2 нет аналога Event.MOUSE_LEAVE и после поиска в интернете нашлось более-менее универсальное рабочее решение, оно не всегда работает корректно (например если мышь резко останавливается за несколько пикселей до границ флешки), но это наилучшее решение.

Также в ActionScript 2 в полноэкранном режиме (fullscreen mode) не получится определить движение мыши с помощью onMouseMove, поэтому если вы хотите определять изменение положения мыши, то придется сравнивать координаты мыши в каждом фрейме.

Код для определения нахождения мыши над сценой:

var mouse_dx:Number = _xmouse;
var mouse_dy:Number = _ymouse;
var mouseSpeed:Number = 1;

function checkPosition(Void):Void
{
    if (_xmouse<mouseSpeed || _xmouse>(Stage.width-mouseSpeed)
     || _ymouse<mouseSpeed || _ymouse>(Stage.height-mouseSpeed))
    {
        trace("out");
    }
    else
    {
        trace("in");
    }
}
checkPosition(Void);

var mouseListener:Object = new Object();
mouseListener.onMouseMove = function():Void
{
    mouse_dx = Math.abs(mouse_dx - _xmouse);
    mouse_dy = Math.abs(mouse_dy - _ymouse);

    mouseSpeed = mouse_dx > mouse_dy ? mouse_dx : mouse_dy;
    mouseSpeed += 1;

    checkPosition(Void);

    mouse_dx = _xmouse;
    mouse_dy = _ymouse;
}
Mouse.addListener(mouseListener);

Комментариев нет:

Отправить комментарий