Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   не срабатывает stopDrag под объектом (http://www.flasher.ru/forum/showthread.php?t=168609)

In8Finity 22.09.2011 16:34

не срабатывает stopDrag под объектом
 
Подскажите, как быть?
У меня два контейнера. В нижний добавляется овал, который можно таскать.
В верхний контейнер добавляется квадрат.

Если схватить овал, затащить его за квадрат, лежащий в верхнем слое и отпустить кнопку мыши - stopDrag не сработает.

Код у меня такой:

Код AS3:

        public function Test() {        
        conteiner_down = new ConteinerDown();
        addChild(conteiner_down);
        conteiner_up = new ConteinerUp();
        addChild(conteiner_up);
 
        box = new Box();
        conteiner_up.addChild(box);
        box.x = 250;
        box.y = 150
 
        oval = new Oval();
        conteiner_down.addChild(oval);
 
        oval.addEventListener(MouseEvent.MOUSE_DOWN, onStartDrag);
        oval.addEventListener(MouseEvent.MOUSE_UP, onStopDrag);
 
                }
 
                private function onStartDrag(evt:MouseEvent):void {
                        oval.startDrag();
                }
                private function onStopDrag(evt:MouseEvent):void {
                        oval.stopDrag();
                }

Можно ли как-то игнорировать верхний контейнер и его содержимое, когда я отпускаю кнопку мыши? Чтобы stopDrag срабатывал в любом случае.

lumaca 22.09.2011 17:03

Добавить MOUSE_OUT.

dimarik 22.09.2011 22:54

Код AS3:

this.oval.addEventListener(MouseEvent.MOUSE_DOWN, onStartDrag);
super.stage.addEventListener(MouseEvent.MOUSE_UP, onStopDrag);


oleg_tomenko 23.09.2011 13:45

Код AS3:

private var isOvalDragging:Boolean = false;
 
 
this.oval.addEventListener(MouseEvent.MOUSE_DOWN, onStartDrag);
super.stage.addEventListener(MouseEvent.MOUSE_UP, onStopDrag);
 
private function onStartDrag(evt:MouseEvent):void {
        if (!isOvalDragging){
                oval.startDrag();
                isOvalDragging = true;
        }               
}
 
private function onStopDrag(evt:MouseEvent):void {
        if (isOvalDragging){
                oval.stopDrag();
                isOvalDragging = false;
        }
 
}

ну чтоб не всегда он срабатывал, а то мало ли че вы там в тот слушатель будете пихать.


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

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