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

charlyod 05.09.2008 16:07

События в подгружаемом мувике - обработка в главном
 
Добрый день,
только начал знакомиться с AC поэтому попрашу сильно не ругать :)
Есть главный мувик.
Есть подгружаемый мувик background.
В подгружаемом мувике находится несколько объектов со своиме instance name.
Мне необходимо в главном мувике выполнять действие при наведении мыши на объект в подгружаемом (background)
не очень понимаю как подгружаемый мувик должен "сообщать" главному что событие произошло...
Подскажите пожалуйста...

mre 05.09.2008 16:23

Подпишите главный мувик на нужное Вам событие и он его получит.

charlyod 05.09.2008 18:23

не очень понимаю как на него подписаться....
Если в этом же мувике this.addEventListener(MouseEvent.CLICK, navigate);
а как подписаться на события элемента из подгружаемого мувика?

mre 05.09.2008 18:44

Событие идет от stage до объекта (если событие bubbles то и обратно) и проходит в том числе через родителя.

charlyod 05.09.2008 18:57

я только начал AS учить... как это событие поймать, не понимаю...
можете поподробнее объяснить ... или может пример есть где?

Antisly 05.09.2008 20:18

Я обычно делаю так:

Код:

public class SomeClass extends MovieClip
{
        public var eventHandler:Function;
               
        public function SomeClass()
        {
                ...
                eventHandler= null;
                ...
                addEventListener(MouseEvent.MOUSE_OVER, onMouseOver);
                ...
        }
        private function onMouseOver(event:MouseEvent):void
        {
                if (eventHandler != null) {
                        eventHandler(event);
                }
        }
}

И уже там, где создаешь экземпляр этого класса, просто пишешь свой обработчик (yourEventHandler) и присваиваешь его:

Код:

var someClass:SomeClass = new SomeClass();
someClass.eventHandler = yourEventHandler;

public function yourEventHandler(event:MouseEvent):void
{
        trace(event.target.name);
}

Может и есть более элегантные способы.... :)

etc 05.09.2008 23:42

Antisly, лучше бы вы это не показывали и сами не использовали.

Автору нужны всплывающие события.

Antisly 05.09.2008 23:54

Цитата:

Сообщение от __etc (Сообщение 762664)
Antisly, лучше бы вы это не показывали и сами не использовали.

Автору нужны всплывающие события.

Автору нужно решение, и я его предложил. И если у вас есть то, что нужнно автору наверняка, то почему бы не поделиться? :confused:

vvk80 06.09.2008 00:52

Код:

public var eventHandler:Function;
это как это??? Не встречал в документации Adobe такаого написания...

а что так нельзя??
Код:

public var preferencesLoaded:Event;
preferencesLoaded = new Event("preferencesLoaded", true)
this.dispatchEvent(preferencesLoaded)

ну и затем подписываемся на это соыбтие в другом классе
Код:

this.addeventListener("preferencesLoaded", onPrefsLoaded);
private function onPrefsLoaded(evt:Event):void
{
//обработчик
}


mre 06.09.2008 01:47

Цитата:

> это как это??? Не встречал в документации Adobe такаого написания...
Это вполне обычный синтаксис описания переменной. Для чего он используется в приведенном примере - другой вопрос.
Цитата:

> а что так нельзя?
Можно, только если автору нужно MOUSE_OVER, можно не диспатчить свое событие, а в родителе подписаться на MOUSE_OVER (MOUSE_OVER - всплывающее в отличии от ROLL_OVER) и в обработчике проверять target. Если пришло от нужного child, выполнять необходимые действия.
Код:

...
this.addChild(someChild);
this.addEventListener(MouseEvent.MOUSE_OVER, overHandler);
...
private function overHandler(e:MouseEvent):void
{
    switch (e.target)
    {
        case someChild:    //действия
                                  break;
        default:                //действия
    }
}
...



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

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