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)
Я в этом не разбираюсь и поэтому прошу не смеяться :)
Надеюсь на помощь :)
Для того, чтобы пользователи не скачивали каждый раз новую версию, я сделал клиент. (Клиент локальный (.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)
Я в этом не разбираюсь и поэтому прошу не смеяться :)
Надеюсь на помощь :)