Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Слушатели MOUSE_MOVE и MOUSE_OUT для stage (http://www.flasher.ru/forum/showthread.php?t=174781)

DimkaN 02.02.2012 14:41

Слушатели MOUSE_MOVE и MOUSE_OUT для stage
 
В общем так:
Есть главная сцена, на ней два слоя. Первый слой содержит кадр со скриптом, второй - кадр с мувиклипом.
Мувиклип содержит анимацию, например, движение текста.

Хочу чтоб при нахождении мыши на сцене, проигрывался мувиклип, а при выходе мыши со сцены, анимация мувиклипа перемещалась на 1й кадр и стопарилась.

Код AS3:

stage.addEventListener(MouseEvents:MOUSE_OVER, goOn);
stage.addEventListener(MouseEvents:MOUSE_OUT, goSTOP);
 
function goON(event:MouseEvents):void
 {
  mv1.gotoAndPlay(2);
 }
 
function goSTOP(event:MouseEvents):void
 {
  mv1.gotoAndSTOP(1);
 }

Почему при наведении на сцену, код не срабатывает, а срабатывает только при наведении на сам мувиклип?
Пробовал добавить мувиклип с белым фоном на 3й слой в главной сцене, помогло, но когда я успеваю навести мышь на мувиклип с анимированным текстом, срабатывает событие MOUSE_OUT? Объясните, пожалуйста, что не так?

DaFive 02.02.2012 14:52

ROLL_OVER, ROLL_OUT

dimarik 02.02.2012 14:53

Difference between MouseEvent.ROLL_OVER and MouseEvent.MOUSE_OVER in AS3

http://www.flasher.ru/forum/showthread.php?t=127100

DimkaN 02.02.2012 15:55

Если так, то срабатывает при наведении на сам мувиклип
Код AS3:

mv1.addEventListener(MouseEvent.ROLL_OVER,fck);
 
function fck(event:MouseEvent):void {
        trace("dfg");
}

А если так
Код AS3:

stage.addEventListener(MouseEvent.ROLL_OVER,fck);
 
function fck(event:MouseEvent):void {
        trace("dfg");
}

Вообще не срабатывает

willis83 02.02.2012 16:50

У вас мышь всегда над stage'м, поэтому второй вариант не работает

Wolsh 02.02.2012 17:09

Код AS3:

stage.addEventListener(MouseEvent.ROLL_OVER, goOn);
stage.addEventListener(Event.MOUSE_LEAVE, goSTOP);


DimkaN 02.02.2012 17:50

Короче, пасаны, всем спасибо. Вот что у меня заработало в итоге.
Добавил еще один слой с белым фоном в самый низ и в кадре слоя со скриптами написал:

Код AS3:

root.addEventListener(MouseEvent.ROLL_OVER,openBanner);
root.addEventListener(MouseEvent.ROLL_OUT,closeBanner);
 
function openBanner(event:MouseEvent):void {
        mv1.gotoAndPlay(2);
}
 
function closeBanner(event:MouseEvent):void {
        mv1.gotoAndPlay(1);
}

Не могу ток я понять почему у меня stage не пашет, и чем отличается от root. Я думал что stage это все пространство сцены и без мувиклипов. Пробовал добавлять слушатели к кадру для пустой сцены - не работают... Добавил один клип - работает, но только при наведении на него, хотя слушатель прикреплен к stage...

elder_Nosferatu 02.02.2012 18:30

Если вы создадите пустой МувиКлип или спрайт, то они тоже не смогут реагировать на мышиные евенты, так как на них не получится навести курсор (у них как бы нет тела). То же самое с стейджем. Но в отличии от root, стейдж не является посто ДисплейОбджектом, он как бы выступает в роли контекста отображения. В смысле он представляет сам плеер с его параметрами, а root - это уже ролик, который воспроизводится в этом плеере.
Извините за такой сумбур, но он мне помогает понимать разницу между stage и root

BlackMetal 29.04.2012 07:46

У меня такой же вопрос объявился в связи с изменением размера флешки через JavaScript посредством ExternalInteface.

Как отследить ВХОД/ВЫХОД мыши на Stage, если Stage пустой, но допустим имеет размеры и фон?
Автору топика пришлось создать еще мувик размерами со Stage, чтоб уже от него следить, но можно ли обойтись без этого?

Чтоб отследить уход мыши с пустого Stage есть слушатель Event.MOUSE_LEAVE, а как же отследить вход на пустой Stage?

Wolsh 29.04.2012 12:00

Код AS3:

stage.addEventListener(MouseEvent.MOUSE_MOVE, handlerMove);



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

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