Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Срабатывание события ROLL_OUT при движении мышки вправо (http://www.flasher.ru/forum/showthread.php?t=200044)

FriOne 29.05.2013 12:00

Срабатывание события ROLL_OUT при движении мышки вправо
 
Хочу сделать свой курсор над определенными спрайтами. Собственно тема и есть вопрос, есть спрайт, на котором висят три события ROLL_OVER, ROLL_OUT и MOUSE_MOVE. Ели двигаешь мышку влево по спрайту, то все ок, если вправо, то постоянно срабатывает ROLL_OUT, ROLL_OVER.

Код AS3:

public function showZoom(object:Sprite):void
                {
                        _objects[object] = "zoom";
                        object.addEventListener(MouseEvent.ROLL_OVER, rollOverHandler);
                        object.addEventListener(MouseEvent.ROLL_OUT, rollOutHandler);
                        object.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);
                }
 
                private function mouseMoveHandler(e:MouseEvent):void
                {
                        if (_currentCursor) {
                                _currentCursor.x = _container.mouseX;
                                _currentCursor.y = _container.mouseY;
                        }
                }
 
                private function rollOverHandler(e:MouseEvent):void
                {
                        Mouse.hide();
                        var type:String = _objects[e.target];
                        var cursor:Sprite;
                        switch(type) {
                                case "left":
                                        _currentCursor = _leftArrow;
                                        break;
                                case "right":
                                        _currentCursor = _rightArrow;
                                        break;
                                case "zoom":
                                        _currentCursor = _zoom;
                                        break;
                                default:
                                        break;
                        }
                        _currentCursor.x = _container.mouseX;
                        _currentCursor.y = _container.mouseY;
                        _currentCursor.visible = true;
                }
 
                private function rollOutHandler(e:MouseEvent):void
                {
                        Mouse.show();
                        _currentCursor.visible = false;
                }

_currentCursor лежит в _container; cпрайт подгружается из swf, его прозрачность 0.01.
Подскажите в чем проблема.

Babylon 29.05.2013 12:13

Возникновение событий не зависит от направления перемещения. Надо смотреть расположение спрайтов.

evgen4ik 29.05.2013 13:22

скорее всего при движении вправо дефолтный курсор наползает на спрайт вашего курсора и, спрайт-контейнер, с которого был совершен переход стреляет событие ролл_аут, потом вы пересчитываете координаты спрайта вашего курсора -> он сдвигается, и дефолтный курсор опять перескакивает со спрайта курсора на спрайт-контейнер и последний стреляет ролл_овер

Wolsh 29.05.2013 13:33

Код AS3:

_currentCursor.mouseEnabled = false;
_currentCursor.mouseChildren = false;


FriOne 29.05.2013 21:30

Видимо вы правы, попробовал вариант Wolsh, почему-то не сработало, но когда прибавил к координатам мышки 3, более менее работает. В итоге изменил эти свойства у контейнера содержащего курсоры - помогло, спасибо)

Babylon 30.05.2013 00:08

Чем отличается Бердск, НСО от Бердск, НСК?

Wolsh 30.05.2013 02:31

Видимо, "Бердск, НСК" это перечисление "Бердск, Новосибирск")))
А я просто "Бердск Новосибирская Область".


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

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