Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   событие при покоящейся мыши (http://www.flasher.ru/forum/showthread.php?t=174972)

privatir 06.02.2012 22:02

событие при покоящейся мыши
 
Здравствуйте. Пишу код(я немного новичок) на AS3. застопорился на одной детали. Дословно проблема звучит так:
1) На сцене имеется мувиклип
2) Когда мышь покидает область мувика и осталавливается на n-секунд( то есть покоится за пределами мувика) он(мувик) проигрывается 1 раз.

До меня не доходит как совместить события покоя мыши(которое приходится писать с танцами с бубном через координаты мыши) и нахождение мыши за пределами мувика. По отдельности - получается, вместе - начинаются глюки. Мой алгоритм, который правда не работает был такой:
-вешаю событие MOUSE_OUT.
-как только оно срабатывает, проводится проверка на покой мыши.
-если мышь покоится - включается таймер.
Но ничего не работает :( Или работает но по частям.
Пожалуйста, если кто-то делал такую штуку, можно примерный код, или по крайней мере его часть.. Желательно без классов - приложение маленькое - не хочется усложнять код

GBee 06.02.2012 22:43

А код покажите?

silin 07.02.2012 00:06

>>события покоя мыши(которое приходится писать с танцами с бубном через координаты мыши)

как вариант можно перезапускать таймер на MOUSE_MOVE
Код AS3:

public class Main extends Sprite 
{
 
        private var timer:Timer = new Timer(2000, 1);
        public function Main():void
        {
                var clip:Sprite = new Sprite();
                clip.graphics.beginFill(0x808080);
                clip.graphics.drawRect(0, 0, 200, 200);
                addChild(clip);
                clip.addEventListener(MouseEvent.MOUSE_OVER, clip_mouseOver);
                clip.addEventListener(MouseEvent.MOUSE_OUT, clip_mouseOut);
 
                timer.addEventListener(TimerEvent.TIMER, timer_timer);
        }
 
        private function timer_timer(e:TimerEvent):void
        {
                // как бы событие бездействия
                trace( "Main.timer_timer  ");
                stage.removeEventListener(MouseEvent.MOUSE_MOVE, stage_mouseMove);
        }
 
        private function stage_mouseMove(e:MouseEvent):void
        {
                timer.reset();
                timer.start();
        }
 
        private function clip_mouseOut(e:MouseEvent):void
        {
                stage.addEventListener(MouseEvent.MOUSE_MOVE, stage_mouseMove);
        }
 
        private function clip_mouseOver(e:MouseEvent):void
        {
                timer.reset();
                stage.removeEventListener(MouseEvent.MOUSE_MOVE, stage_mouseMove);
        }
 
}


FlashRus 07.02.2012 00:28

Вложений: 1
ыыыы)) silin опередил))))
Но моя реализация хуже (т.к. в кадре) ибо лень было писать класс.


Цитата:

Желательно без классов - приложение маленькое - не хочется усложнять код
- советую работать с классами. Причин много.

privatir 07.02.2012 01:13

silin, спасибо. Кажется то, что нужно, и главное понятно))
FlashRus, - советую работать с классами. Причин много. - Понимаю. Но пока, что руки не доходят до классов, хоть кодить и умею, не не привычно разбивать текст на мелкие детальки.
Спасибо.


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

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