PDA

Просмотр полной версии : .swf in .swf | не работает клавиатура


MikroAcse
04.02.2012, 19:36
Итак, я делаю игру, которая будет постоянно обновляться.
Для того, чтобы пользователи не скачивали каждый раз новую версию, я сделал клиент. (Клиент локальный (.exe))
Клиент загружает в себя игру из сайта:
import flash.display.Sprite;// это базовый класс для нашего root'а
import flash.display.Loader;// в экземпляр данного класса будем грузить картинку
import flash.display.LoaderInfo;// из экземпляра данного класса, будем брать информацию
import flash.text.TextField;// в текстовом поле, будем отображать процесс загрузки
import flash.text.TextFieldAutoSize;// тут константы вариантов значения свойства textField.autoSize
import flash.net.URLRequest;// экземпляр данного класса, будет хранить в себе адресс картинки
import flash.events.Event;// это событие
import flash.events.ProgressEvent;
import flash.display.MovieClip;

//создаем экземпляр Loader
var loader:Loader = new Loader();
//создаем экземпляр TextField
var loadStatus:TextField = new TextField();
//создаем экземпляр URLReques
var request:URLRequest=new URLRequest("http://site.com/game/game.swf");
Security.loadPolicyFile("http://site.com/crossdomain.xml");
Security.allowDomain("http://site.com/");

// конструктор
//Начинаем загрузку
loader.load(request);
// подписываем обработчики события
loader.contentLoaderInfo.addEventListener(Event.OPEN,displayPreloader);
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,updatePreloader);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,displayImage);
//наши обработчики событий;
function displayPreloader(evt:Event):void {
//добавляем текствое поле
loadStatus.autoSize=TextFieldAutoSize.LEFT;
addChild(loadStatus);
}

function updatePreloader(evt:ProgressEvent):void {
//изменяем информацию в процессе загрузки
loadStatus.text="loaded:"+evt.bytesLoaded+" from "+evt.bytesTotal;
}

function displayImage(evt:Event):void {
var GAME:MovieClip=loader.content as MovieClip
removeChild(loadStatus);

addChild(GAME);
}
Итак, игра работает, но управлять ею нельзя.
Управление клавиатурой.
Я пробовал разными способами:
parent.addEventListener(KeyboardEvent.KEY_DOWN,keyDownHandler)
parent.addEventListener(KeyboardEvent.KEY_UP,keyUpHandler)

this.root.addEventListener(KeyboardEvent.KEY_DOWN,keyDownHandler)
this.root.addEventListener(KeyboardEvent.KEY_UP,keyUpHandler)


this.root.parent.addEventListener(KeyboardEvent.KEY_DOWN,keyDownHandler)
this.root.parent.addEventListener(KeyboardEvent.KEY_UP,keyUpHandler)

Я в этом не разбираюсь и поэтому прошу не смеяться :)

Надеюсь на помощь :)

Jewelz
04.02.2012, 22:07
может фокус с флешки пропадает?

если попробовать на stage добавить слушатель?

MikroAcse
04.02.2012, 22:48
stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDownHandler)
stage.addEventListener(KeyboardEvent.KEY_UP,keyUpHandler)

Если сделать так, то пишет(в клиенте, в output), что я ссылаюсь на объект с ссылкой 'null'

udaaff
04.02.2012, 23:10
Надо дождаться, пока этот самый stage станет доступен.
Event.ADDED_TO_STAGE.

MikroAcse
12.02.2012, 18:04
udaaff,
Спасибо большое!