|
|
|||||
Регистрация: Oct 2013
Сообщений: 23
|
Stage и preloader
Я начинающий, не судите строго.
Есть игра. При нажатии кнопки в главном меню запускается сам игровой процесс. Нужно было осуществить управление клавиатурой. Единственным рабочим способом оказался такой: /*Обработчик нажатие кнопки начала игры*/ function gsConnect(event:Event){ addChild(_game);} /*конструктор класса _game*/ function Game() { . . . . this.addEventListener(Event.ADDED, _test); . . . . } /*Ф-я добавление слушателей клавиатуры*/ function _test(event:Event){ stage.addEventListener(KeyboardEvent.KEY_DOWN, reportKeyDown); stage.addEventListener(KeyboardEvent.KEY_UP, reportKeyUp); stage.addEventListener(Event.ENTER_FRAME,Movement);} [spoiler] package { import flash.display.*; import flash.events.*; import flash.text.TextField; import flash.net.URLRequest; public class Preloader extends Sprite { var progress_tf:TextField = new TextField(); var loader:Loader = new Loader(); public function Preloader() { var loader_url='http://.... .swf'; progress_tf.x=530/2; progress_tf.y=380/2; addChild(progress_tf); var loadURL:URLRequest=new URLRequest(loader_url); loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,onLoadProgress);// прогресс загрузки loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onLoadComplete);// загружено loader.load(loadURL); } function onLoadProgress(evt:ProgressEvent):void { progress_tf.text = String(Math.round(100*(evt.bytesLoaded/evt.bytesTotal)))+"%"; } function onLoadComplete(evt:Event):void { removeChild(progress_tf); addChild(loader); } } } И что вы думаете, естественно, stage теперь не фокусируется на классе Game(имхо), и не реагирует на нажатие клавиш. Не прошу решить проблему за меня. Хотел бы услышать объяснение почему таковая возникает, либо почувствовать пинок в максимально конкретезированном направлении её решения. |
|
|||||
Должно работать, но как вариант:
Event.ADDED -> Event.ADDED_TO_STAGE Ну и вцелом не оч красивый прелоадер получился. Лучше посмотреть на шаблон, который по-умолчанию создает FleshDevelop.
__________________
Кто к нам с чем для чего - тот у нас того от того. |
|
|||||
Регистрация: Oct 2013
Сообщений: 23
|
Dukobpa3, примного благодарю за отклик.
Цитата:
Добавлено через 1 час 19 минут Ошибка, как выяснилось, заключалась и продолжает заключаться в том, что на созданный экземпляр класса Game не переходит фокус, т.е. пока те тыкнешь по сцене мышкой — никакой реакции на клавиши. Пробовал , при локальном тестировании работает и без, а Вконтакте всё также. Добавлено через 2 часа 26 минут Тему можно закрывать Решение оказалось в итоге в дважды проще чем думалось. Фокус теряло само приложение. Всё прекрасно работает, если строчку изменить на Последний раз редактировалось Всеволод; 29.01.2014 в 09:33. Причина: очепятка |
|
|||||
Регистрация: Jan 2014
Адрес: Россия, Саратов
Сообщений: 28
|
Интересно почему приложение теряло фокус...
|
Часовой пояс GMT +4, время: 23:30. |
|
« Предыдущая тема | Следующая тема » |
Теги |
AS3 , preloader , stage , stage.addEventListener |
|
|