Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Вложеность событий (http://www.flasher.ru/forum/showthread.php?t=73568)

Reijii 26.12.2005 12:14

Вложеность событий
 
Доброго дня,

подскажите как решить проблему связанную с перекрытием собития вложенного мувика его родителем..
пробовал писать на вложенном
Код:

this.onRollOver = function () {
 var mc = this._parent
 while (mc) {
  mc.onMyRollOver()
  mc = mc._parent
 }
}

но flash усердно ругается.. через прототипы тоже не очень получилост.. :(

помогите плиз.

Stone 26.12.2005 12:31

Код:

mc.onRollOver = function () {
TRACE("первый");
}
mc.mc.onRollOver = function () {
TRACE("вложенный");
}

или я не что не понял?

Reijii 26.12.2005 12:35

Скорее всего я не дообъяснил.

у меня есть класс, который строит меню (из XML), в качестве кнопок он берет указанный пользователем мувик из библиотеки, в нутри которго есть есть пользовательский код для анимации кнопачки (например оновер - play(2) и т.п.).. но при построении меню, "вешается" событие (кллассом) на оновер, для показывания под меню.. вот.. и получается в рузальтатет что подменю показывается а анимация не играется

s_u_m_p 26.12.2005 12:37

2Stone в твоем варианте вложенный мув в жизни не получит евента rollOver.

единственный вариант на родителе поставить обработчик событий мыши

Код:

onMouseMove = function () {
if (this.hitTest (_root._xmouse, _root._ymouse)) {
trace ('parent.rollOver');
}
}


Reijii 26.12.2005 12:44

Спасибо. я тоже думал что прийдется так делать, но искал более другого метода )
но тогда вопрос ) встречный, а как обойти onRelease ?
даже скорее всего правильней спросить не onRelese, а вообще все on* , ведь как только объявить "котейнеру" событие, он все съедает. :(
:confused: :rolleyes:

s_u_m_p 26.12.2005 12:56

события onMouse* получает все, не важно что определенно у родителя.
если у родителя определенно хотя бы одно из [onRollOver, onRollOut, onRelease, onPress] его дети уже не получат этих событий (даже если при этом у родителя стоит enabled = false), поэтому если ты хочешь чтобы дети тоже получали, то можно так

Код:

mc.onRelease = function () {
this.onReleaseHandler ();
for (var name:String in this) {
var mc:MovieClip = this [name];
if (MovieClip (mc) != null && mc.hitTest (_root._xmouse, _root.ymouse)) {
mc.onRelease ();
} // end if
}
}


Reijii 26.12.2005 13:50

Вложений: 1
чтото как-то не вышло.. нужно поискать драйвера к рукам...
вот мой код.. может там что не так, и при его наличии будет понятней моя проблема.


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

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