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

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

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

Регистрация: Jul 2009
Сообщений: 95
По умолчанию Не вызывается обработчик keyUp((

Имеется простейший код внешней загрузки SWF:

Код AS3:
var request:URLRequest = new URLRequest("Game.swf");
var loader:Loader = new Loader();
 
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loadProgress);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
 
 
function loadProgress(event:ProgressEvent):void 
{
    var percentLoaded:Number = event.bytesLoaded / event.bytesTotal;
    percentLoaded = Math.round(percentLoaded * 100);	
	this.percentLoaded.text = String(uint(percentLoaded)) + "%";
}
 
function loadComplete(event:Event):void 
{
    trace("Load Complete");
	this.percentLoaded.visible = false;
}
 
loader.load(request);
this.addChild(loader);
В Game.swf, в document-классе есть код:

Код AS3:
this.parent.addEventListener(KeyboardEvent.KEY_UP, onGlobalKeyUp);
//Пробовал так же this.addEventListener(KeyboardEvent.KEY_UP, onGlobalKeyUp);

И по каким-то причинам, при обычном запуске game.swf, обработчик срабатывает. А если я пытаюсь загрузить её извне(см. код выше), т.е. из другой флешки, обработчик не вызывается...

Вот я бы вас, уважаемые и хотел спросить: может, во флеше есть какие-то ограничения, связанные с этим?

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

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Цитата:
Сообщение от tofflife Посмотреть сообщение
В Game.swf, в document-классе есть код:

Код AS3:
this.parent.addEventListener(KeyboardEvent.KEY_UP, onGlobalKeyUp);
//Пробовал так же this.addEventListener(KeyboardEvent.KEY_UP, onGlobalKeyUp);
И по каким-то причинам, при обычном запуске game.swf, обработчик срабатывает.
this.parent в этом случае равен Stage. Поздравляю! Вы подписались на глобальный диспетчер клавиатурных событий.


Цитата:
А если я пытаюсь загрузить её извне(см. код выше), т.е. из другой флешки, обработчик не вызывается...
Ну, тогда this равен loader.content, а this.parent соответственно равен loader. loader не имеет фокуса (т.е. this.stage.focus != loader), а значит, диспатчить события клавы loader не будет.

В обоих случаях достаточно добавить слушателя к stage:

Код AS3:
this.stage.addEventListener(KeyboardEvent.KEY_UP, onGlobalKeyUp);
естественно, убедившись в наличии этого this.stage.

Для флешек из разных доменов может произойти "упс"!
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 29.03.2010, 22:41
tofflife вне форума Посмотреть профиль Отправить личное сообщение для tofflife Найти все сообщения от tofflife
  № 3  
Ответить с цитированием
tofflife

Регистрация: Jul 2009
Сообщений: 95
Да! Спасибо! Я именно так и попробовал! Спасибо большое, толково объяснили))

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

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

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


 


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


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