Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 16.03.2010, 21:58
misha_yu вне форума Посмотреть профиль Отправить личное сообщение для misha_yu Найти все сообщения от misha_yu
  № 1  
Ответить с цитированием
misha_yu

Регистрация: Jun 2008
Сообщений: 56
По умолчанию 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, а запустить отдельно)

Старый 16.03.2010, 22:03
GentleFLASH вне форума Посмотреть профиль Отправить личное сообщение для GentleFLASH Найти все сообщения от GentleFLASH
  № 2  
Ответить с цитированием
GentleFLASH

Регистрация: Apr 2009
Сообщений: 117
Если swf загружается, то нужно им подписаться на событие ADDED_TO_STAGE. Вот как оно отработает, тогда stage уже не будет null

Старый 17.03.2010, 00:02
AlexDesinger вне форума Посмотреть профиль Отправить личное сообщение для AlexDesinger Посетить домашнюю страницу AlexDesinger Найти все сообщения от AlexDesinger
  № 3  
Ответить с цитированием
AlexDesinger

Регистрация: Feb 2007
Сообщений: 563
все дело что он обращается к своему 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)


Последний раз редактировалось AlexDesinger; 17.03.2010 в 00:06.
Старый 17.03.2010, 19:33
misha_yu вне форума Посмотреть профиль Отправить личное сообщение для misha_yu Найти все сообщения от misha_yu
  № 4  
Ответить с цитированием
misha_yu

Регистрация: Jun 2008
Сообщений: 56
Большое спасибо

Старый 17.03.2010, 20:45
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 5  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
AlexDesinger, исходя из вашей логики, MOUSE_LEAVE шлёт любой DisplayObject (что неправильно) и что parent — всегда Stage.

Старый 17.03.2010, 23:06
AlexDesinger вне форума Посмотреть профиль Отправить личное сообщение для AlexDesinger Посетить домашнюю страницу AlexDesinger Найти все сообщения от AlexDesinger
  № 6  
Ответить с цитированием
AlexDesinger

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

Старый 18.03.2010, 08:18
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 7  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от AlexDesinger Посмотреть сообщение
etc
то, что MOUSE_LEAVE только для stage, че то забыл, ну а то что this.parent - там просто исходя из задания, ну думаю автор понял главное - то что после загрузки в другой swf stage уже как миниму на уровень выше, поскольку подгруженный swf в другой swf представляет из себя MovieClip.
«Забыл» и «если я скажу ему, что улица такая-то на севере, а её там на самом деле нет, ну я думаю догадается, что надо на юг идти».

Создать новую тему Ответ Часовой пояс GMT +4, время: 13:08.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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