Форум Flasher.ru

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

Dr_Bra 11.10.2010 20:09

stage ROLL_OVER почему-то не срабатывает
 
всем привет, подскажите почему не срабатывает событие ролл овер
Код AS3:

package com
{
        import flash.display.MovieClip;
        import flash.display.Stage;
        import flash.events.Event;
        import flash.events.MouseEvent;
        import flash.ui.Mouse;
 
        public class Main extends MovieClip
        {
                private static const CURSOR_X:int = 250;
                private static const CURSOR_Y:int = 150;
 
                private var cursor:MovieClip;
                private var _stage:Stage;
 
                public function Main()
                {
                        this.addEventListener(Event.ADDED_TO_STAGE, init);
                }
 
                private function init(e:Event):void
                {
                        trace("Main class loaded")
                        this.removeEventListener(Event.ADDED_TO_STAGE, init);
 
                        _stage = stage;
                        //Mouse.hide();
                        cursor = new Cursor();
                        stage.addChild(cursor);
                        cursor.x = CURSOR_X;
                        cursor.y = CURSOR_Y;
                        cursor.rotation = -7;
 
                        _stage.addEventListener(MouseEvent.ROLL_OVER, mouseOver, false, 0, true);
 
                        _stage.addEventListener(MouseEvent.MOUSE_MOVE, moveCursor, false, 0, true);                       
                }
 
                private function mouseOver(e:MouseEvent):void
                {
                        trace("mouse over")
                        cursor.gotoAndStop("handl");
                }
 
                private function moveCursor(e:MouseEvent):void
                {
                        cursor.x = stage.mouseX;
                        cursor.y = stage.mouseY;
                }
 
        }
}


alatar 11.10.2010 20:28

Какой смысл создавать переменную _stage? И зачем вам вообще в данной ситуации ROLL_OVER? У вас курсор всегда будет в положении "handl".

Добавлено через 4 минуты
Точно не помню, но stage вроде не отправляет события ROLL_OVER, MOUSE_OVER. Используйте Event.ACTIVATE.

Dr_Bra 11.10.2010 20:40

дело в том что, курсор если не наводит он движется, а как только навели на стэдж, наш курсор должен зафиксироваться

wvxvw 11.10.2010 20:46

А вы пользователя об этом предупредили? А то он наивный не знает, и будет продолжать мышкой водить...

Dr_Bra 12.10.2010 11:43

Сразу не объяснил, сори.
Делаю баннер, внутри баннера есть свой нарисованный смешной курсор, пока на баннер не навели, нарисованный курсор "дергается" ) как только мы навели на баннер, наш нарисованный курсор меняет настоящий курсор и нарисованный курсор перескакивает на кадр "handl" в этом кадре он фиксируется.

Добавлено через 50 секунд
И пользователь уже управляет "не дерганым" курсором

Добавлено через 10 минут
Цитата:

Сообщение от alatar (Сообщение 942131)
Точно не помню, но stage вроде не отправляет события ROLL_OVER, MOUSE_OVER. Используйте Event.ACTIVATE.

ACTIVATE что-то не подходит, идея такая: пользователь навел на баннер настоящий курсор и тут должно сработать событие mouseOver

iCluster 12.10.2010 11:55

Попробуйте сделать подложку у банера в виде прозрачного MovieClip - и все реакции курсора перевесить на него. Только с уходом курсора со сцены будет проблематично, но и тут можно извернуться - к примеру сделать таймер проверяющий находится ли мышь в области флешки :)

alatar 12.10.2010 12:00

Цитата:

но и тут можно извернуться - к примеру сделать таймер проверяющий находится ли мышь в области флешки
Для этого существует событие Event.MOUSE_LEAVE.
Цитата:

пользователь навел на баннер настоящий курсор и тут должно сработать событие mouseOver
Содержимое у вашего баннера будет? Вот на него слушателя и вешайте.

Wolsh 12.10.2010 15:27

stage прекрасно ловит MOUSE_MOVE

Dr_Bra 12.10.2010 15:47

а как быть в таком случае:
мы схватили предмет, начинаем его "таскать" по сцене, а под предметом который мы таскаем находится персонаж. К персонажу прикручен слушатель ROLL_OVER, но слушатель не срабатывает, хотя, к курсору и к предмету который мы таскаем прописан такой код:
Код AS3:

mouseChildren = false;


alatar 12.10.2010 15:58

Цитата:

stage прекрасно ловит MOUSE_MOVE
Это вы к чему?
Цитата:

мы схватили предмет, начинаем его "таскать" по сцене...
Как один из вариантов прописать ему, после того как схватили mouseEnabled = false и подписаться у stage на событие MOUSE_UP, по которому вернуть все обратно.


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

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