Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   event Release outside (http://www.flasher.ru/forum/showthread.php?t=144452)

in4core 12.09.2010 22:10

event Release outside
 
Код AS3:

sc.addEventListener(MouseEvent.MOUSE_DOWN,drgStart);
sc.addEventListener(MouseEvent.MOUSE_UP,drgEnd);
 
function drgStart(e:MouseEvent) {
        e.target.startDrag(false,rect);
}
 
function drgEnd(e:MouseEvent) {
        e.target.stopDrag();
}

Логика вроде правильная, но интересно, что при скролировании вне диапазона и потом отпускания мыши скроллинг все равно идет. Как его убивать то? В авм1 это было ReleaseOutside. И да кстати интересное свойство Click одноверменно обслуживает 2 события Release и ReleaseOutside - странно, что второе по дефолту false получается ( научно говоря ))))

i.o. 12.09.2010 22:16

stage -> MouseEvent.MOUSE_UP

in4core 12.09.2010 22:20

чей то не рационально суда стейдж то приписывать мне кажется... дургих разве нету решений?

iNils 12.09.2010 22:27

Нету.

i.o. 12.09.2010 22:27

Цитата:

чей то не рационально
? stage доступен в каждом дисплей обджекте. Следовательно при добавлении на стэдж подписываетесь. При удалении со стэйджа отписываетесь от stage -> MouseEvent.MOUSE_UP

in4core 12.09.2010 22:31

спасиба

Psycho Tiger 12.09.2010 22:32

Цитата:

Следовательно при добавлении на стэдж подписываетесь.
Зачем? Если произошел MOUSE_DOWN по объекту - то зуб даю, у него есть stage )
В MOUSE_DOWN и подписываемся на MOUSE_UP.

i.o. 12.09.2010 22:34

MOUSE_DOWN объект не всегда тот же, что и MOUSE_UP объект...
А, все, въехал про что речь))

in4core 12.09.2010 23:28

А я опять не доехал блин (((

Код AS3:

protected function drgStart(e:MouseEvent) {
                        sc.addEventListener(MouseEvent.MOUSE_UP,drgEnd);
                        sc.addEventListener(MouseEvent.MOUSE_MOVE,drgUpdate);
                        sc.startDrag(false,rect);
                }
                protected function drgEnd(e:MouseEvent) {
                        sc.removeEventListener(MouseEvent.MOUSE_UP,drgEnd);
                        sc.removeEventListener(MouseEvent.MOUSE_MOVE,drgUpdate);
                        sc.stopDrag();
                }

если так, то все как было изначально, тоесть за пределами не скроллится.

а если так

Код AS3:

protected function drgStart(e:MouseEvent) {
                        stage.addEventListener(MouseEvent.MOUSE_UP,drgEnd);
                        stage.addEventListener(MouseEvent.MOUSE_MOVE,drgUpdate);
                        sc.startDrag(false,rect);
                }
                protected function drgEnd(e:MouseEvent) {
                        stage.removeEventListener(MouseEvent.MOUSE_UP,drgEnd);
                        stage.removeEventListener(MouseEvent.MOUSE_MOVE,drgUpdate);
                        sc.stopDrag();
                }

То ругань компилятора, про null #1009

samana 12.09.2010 23:50

Код AS3:

sc.addEventListener(MouseEvent.MOUSE_DOWN,drgStart);
stage.addEventListener(MouseEvent.MOUSE_UP,drgEnd);
 
function drgStart(e:MouseEvent) {
        e.target.startDrag(false,rect);
}
 
function drgEnd(e:MouseEvent) {
        stopDrag();
}



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

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