Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   MOUSE_OVER (http://www.flasher.ru/forum/showthread.php?t=144815)

roborobo 21.09.2010 23:13

MOUSE_OVER
 
Требуется получать событие MOUSE_OVER все время (с некоторым интервалом, например, 10 раз в секунду), пока курсор над объектом, а не только в момент наведения курсора. Как это лучше сделать?
И сразу второй вопрос - как сделать цикл, что бы на каждой итерации была задержка? Пробовал таймер, не получилось.

stweet 21.09.2010 23:18

Цитата:

Пробовал таймер, не получилось.
плохо пробовал.

roborobo 21.09.2010 23:20

Да, плохо... Есть работающий пример?

КорДум 22.09.2010 00:24

Сработал mouseOver, включился таймер, сработал mouseOut, выключился таймер. Только что-то мне подсказывает, что тут лучше пользоваться enterFrame, а не таймером.

roborobo 22.09.2010 00:41

КорДум: "лучше пользоваться enterFrame"

А если у меня фреймы не меняются? Я скролл делаю. У меня при наведении курсора на объект меняется положение другого объекта (на N пикселей, каждые 1/m сек).

stweet 22.09.2010 00:41

"enterFrame" работает от количества кадров, не вариант. Таймер здесь в раз будит.
А в целом КорДум прав.

roborobo 22.09.2010 00:45

stweet
Ок. Но все же, как правильно организовать таймер в моем случае? Таймер может генерить event'ы с некоторой периодичностью?

stweet 22.09.2010 01:00

нет, <<!"enterFrame" работает от количества кадров!>> скинь пример, допишу отдам.

roborobo 22.09.2010 01:06

stweet
Ну а какой пример? Пусть будет 2 объекта - button и ... да что угодно, например graphic. При наведении курсора на button, graphic должен смещаться вверх на 2 пикселя каждые 1/20 сек. Вот и весь проект :)

stweet 22.09.2010 01:34

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

Код AS3:

package {
        import flash.display.Sprite;
        import flash.events.MouseEvent;
        import flash.events.TimerEvent;
        import flash.utils.Timer;
 
        public class TestTimerBtn extends Sprite {
 
                private var tmp_btn:Sprite;
                private var tmp_tim:Timer;
                private var n:int;
 
                public function TestTimerBtn ():void {
 
                        tmp_btn = new Sprite();
                        tmp_btn.graphics.lineStyle(1);
                        tmp_btn.graphics.beginFill(0x0000ff, 1);
                        tmp_btn.graphics.drawRect(50, 50, 100, 50);
                        addChild(tmp_btn);
 
                        tmp_btn.addEventListener(MouseEvent.MOUSE_UP, M_BTN1);
                        tmp_btn.addEventListener(MouseEvent.MOUSE_OVER, M_BTN2);
 
                        tmp_tim = new Timer(100, 0); // Сдесь "100" интервал. "0" количество раз.
 
                        tmp_tim.addEventListener(TimerEvent.TIMER, timeOut);
                }
 
                private function M_BTN1(e:MouseEvent):void {
                        tmp_tim.start();
                }
 
                private function M_BTN2(e:MouseEvent):void {
                        tmp_tim.stop();
                }
 
                private function timeOut(e:TimerEvent):void {
                        n ++;
                        if (n == 10) {
                                trace("Yes");
                                n = 0;
                        }
                }
        }
}



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

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