Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   обработка onMouseMove (http://www.flasher.ru/forum/showthread.php?t=100176)

Kopilkus 21.08.2007 16:17

обработка onMouseMove
 
вот такое дело, так как событие onMouseMove является глобальным, то возникает достаточно часто. В случае, когда нужно сделать перетаскиванье мышью какого-то элемента можно написать что-то вроде этого:

Код:

var x : Number = 0;

clip.onPress = function ()
{
        this._parent.x = this._xmouse;
}

clip.onMouseMove = function()
{       
        if (this._parent.x != 0)
        {
                this._parent.clip._x += this._xmouse - this._parent.x;
        }
}

clip.onMouseUp = function ()
{
        this._parent.x = 0;
}

но в этом случае событие onMouseMove все равно будет очень часто вызываться в пустую - примерно в 99.99% случаев, не лучше ли использовать вариант:
Код:

var x : Number = 0;

clip.onPress = function ()
{
        this.onMouseMove = this._parent.clipOnMouseMove;
        this._parent.x = this._xmouse;
}

function clipOnMouseMove()
{       
        this._parent.clip._x += this._xmouse - this._parent.x;
}

clip.onMouseUp = function ()
{
        this.onMouseMove = null;
}

не знаю, може это уже обсуждалось. посоветуйте какой подход рациональнее использовать.

Infectedcell 21.08.2007 16:25

а принципиально отказываться от
Код:

startDrag()
stopDrag()

?

Molecula 21.08.2007 16:27

Для перетаскивание есть
Код:

this.startDrag()

Kopilkus 21.08.2007 20:05

а при драге событие перемещения объекта можно отлавливать только onMouseMove или при перемещениии генерится другое событие(честно юзал поиск =))?

Wolsh 22.08.2007 01:57

Не, не генерится. Если не хотите все время просчитывать что-то связанное с движениями мыши, а хотите делать это только при драге, создавайте при нажатии специальный листенер а при отпускании удаляйте его. Функцию счета свяжите с событием в этом листенере. Тогда считаться будет только при драге.
Код:

var DragListener:Object = new Object();
my_mc.onPress = function(){
this.startDrag();
Mouse.addListener(DragListener);
}
my_mc.onRelease =  my_mc.onReleaseOutside = function(){
this.stopDrag();
Mouse.removeListener(DragListener);
}
DragListener.onMouseMove = function(){
trace('чего-то считаем, пока объект тащится');
}



Часовой пояс GMT +4, время: 03:51.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.