Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   MOUSE_LEAVE в загруженной swf (http://www.flasher.ru/forum/showthread.php?t=137569)

misha_yu 16.03.2010 21:58

MOUSE_LEAVE в загруженной swf
 
Всем привет,

В первом swf ловится событие MOUSE_LEAVE.

Код AS3:

this.stage.addEventListener(Event.MOUSE_LEAVE, mouseLeaveStage)
function mouseLeaveStage(e:Event) {}

Этот swf загружается в другой swf, и пишет ошибку:
Error #1009: Cannot access a property or method of a null object reference.

Можно ли как нибудь решить эту проблему, как нибудь обратиться к stage "родительского" swf и слушать MOUSE_LEAVE из него?

P.S. Я временно решил задачу, отслеживанием координат мыши, но мне кажется это не достаточно надежно, скорость реакции меньше. с MOUSE_LEAVE работает гораздо лучше (если swf на подгружать в другой swf, а запустить отдельно)

GentleFLASH 16.03.2010 22:03

Если swf загружается, то нужно им подписаться на событие ADDED_TO_STAGE. Вот как оно отработает, тогда stage уже не будет null

AlexDesinger 17.03.2010 00:02

все дело что он обращается к своему stage, который прекращает существовать, как только он подгружается в другой swf, поэтому он не знает к чему обращаться, поскольку иерархия мувиклипов изменилась, поэтому пишите просто -
Код AS3:

this.addEventListener(Event.MOUSE_LEAVE, mouseLeaveStage)

а если нужно глобально отлавливать это событие, то -
нужно подписаться как вам говорили к событию добавлению к stage -
Код AS3:

this.addEventListener(Event.ADDED_TO_STAGE, addedStage)

дальше присваиваете свой слушатель к стэйджу -
Код AS3:

this.parent.addEventListener(Event.MOUSE_LEAVE, mouseLeaveStage)


misha_yu 17.03.2010 19:33

Большое спасибо :)

etc 17.03.2010 20:45

AlexDesinger, исходя из вашей логики, MOUSE_LEAVE шлёт любой DisplayObject (что неправильно) и что parent — всегда Stage.

AlexDesinger 17.03.2010 23:06

etc
то, что MOUSE_LEAVE только для stage, че то забыл, ну а то что this.parent - там просто исходя из задания, ну думаю автор понял главное - то что после загрузки в другой swf stage уже как миниму на уровень выше, поскольку подгруженный swf в другой swf представляет из себя MovieClip.

etc 18.03.2010 08:18

Цитата:

Сообщение от AlexDesinger (Сообщение 893821)
etc
то, что MOUSE_LEAVE только для stage, че то забыл, ну а то что this.parent - там просто исходя из задания, ну думаю автор понял главное - то что после загрузки в другой swf stage уже как миниму на уровень выше, поскольку подгруженный swf в другой swf представляет из себя MovieClip.

«Забыл» и «если я скажу ему, что улица такая-то на севере, а её там на самом деле нет, ну я думаю догадается, что надо на юг идти».


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

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