Форум 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=169930)

Slavaaaa 14.10.2011 20:35

Отслеживание активности мышки или клавы
 
Здравствуйте! у меня есть флеш презентация на as3/ сам я знаю его посредственно gotoandplay на таймлайне - так сделаны переходы между кадрами презентации.

Необходимо сделать чтобы если пользователь какое то время (1 минута например) не водит мышкой и не нажимает клавиш - поверх презентации проигрывался ролик (flv файл)

А как только мышка задвигалась - ролик исчезал. Как это реализовать ? прошу написать код.

Спасибо

СлаваRa 14.10.2011 20:51

откройте справку, посмотрите события MouseEvent

goodguy 14.10.2011 20:53

Цитата:

прошу написать код.
С такими просьбами здесь обычно обращаются в вакансии.
Но раз уж задача такая простая, то:
Код AS3:

package  {
        import flash.display.Sprite;
        import flash.events.Event;
        import flash.events.KeyboardEvent;
        import flash.events.MouseEvent;
        import flash.events.TimerEvent;
        import flash.utils.Timer;
 
        public class TimerTracer extends Sprite {
 
                private var _timer:Timer = new Timer(60000);        // выставляем минуту
 
                public function TimerTracer() {
                        if (stage) init();
                        else addEventListener(Event.ADDED_TO_STAGE, init);
                }
 
                private function init(e:Event = null):void {
                        removeEventListener(Event.ADDED_TO_STAGE, init);
                        stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
                        stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
                        _timer.addEventListener(TimerEvent.TIMER, onTimerTick);
                        startMovie();
                }
                private function startMovie():void { // этот матод нужно вызвать вручную
                          _timer.reset();
                                    _timer.start();       
                }
                private function onTimerTick(e:TimerEvent):void {
                        trace("Прошла минута, показываем ролик"); // досюда дойдет, только если в течение минуты ни мышь ни клавиатура не проявили активности                  _timer.stop();
                }
                private function onKeyDown(e:KeyboardEvent):void {
                        _timer.reset(); // нажата какая-то клавиша, сбрасываем таймер и заново его стартуем
                        _timer.start();
                }
 
                private function onMouseMove(e:MouseEvent):void {
                        _timer.reset(); // то же самое для движения мыши
                        _timer.start();
                }
        }
}


Slavaaaa 15.10.2011 15:09

Спасибо большое за код. я попробую разобраться и отпишусь что получилось

fish_r 15.10.2011 15:17

Цитата:

Сообщение от goodguy (Сообщение 1039253)
С такими просьбами здесь обычно обращаются в вакансии.
Но раз уж задача такая простая, то:...

К слову сказать: обработчик можно было бы один поставить на все события активности, в контексте ведь не важно что именно делает юзер, главное - делает. Ну, я так делаю, не знаю - может это и не по фен-шую :)

Slavaaaa 15.10.2011 16:08

goodguy, Выдает ошибку код:
Scene0, Layer 'Layer 6', Frame 25, Line 23 1083: Syntax error: package is unexpected.

я вобще дуб дубом в этом. может вы возьметесь помоч за деньги?

cleptoman 15.10.2011 16:51

это пример кода для класса, а не вставки его в фрейм таймлайна..надо было сразу вам в вакансии )


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

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