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

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

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

Регистрация: Oct 2013
Сообщений: 23
По умолчанию Stage и preloader

Я начинающий, не судите строго.
Есть игра. При нажатии кнопки в главном меню запускается сам игровой процесс. Нужно было осуществить управление клавиатурой. Единственным рабочим способом оказался такой:
Код AS3:
/*Обработчик нажатие кнопки начала игры*/
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]
Код AS3:
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);
         }
 
	}
 
}
[/spoiler]
И что вы думаете, естественно, stage теперь не фокусируется на классе Game(имхо), и не реагирует на нажатие клавиш. Не прошу решить проблему за меня. Хотел бы услышать объяснение почему таковая возникает, либо почувствовать пинок в максимально конкретезированном направлении её решения.

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

Теги
AS3 , preloader , stage , stage.addEventListener

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

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


 


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


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