Просмотр полной версии : Кастомизация стандартного прелоадера
zorexundra
16.09.2011, 15:49
Прошу прощения, если у кого-нибудь мой вопрос вызовет аскому.
Как в стандартном прелоадоре апликации заменить слова "loading", "initialize" на русскоязычные аналоги, IDE FB 4.0? Спасибо!
Dimitry_II
16.09.2011, 18:24
Во-первых, указываем в Application
<mx:Application ... preloader="CustomPreloader">
А потом сам CustomPreloader:
package {
import flash.display.*;
import flash.events.*;
import flash.net.URLRequest;
import mx.events.FlexEvent;
import mx.preloaders.DownloadProgressBar;
import mx.preloaders.IPreloaderDisplay;
public class CustomPreloader extends DownloadProgressBar implements IPreloaderDisplay {
private var imageControl:Loader;
public function CustomPreloader() {
super();
}
override public function set preloader(preloader:Sprite):void {
preloader.addEventListener(ProgressEvent.PROGRESS, handleProgress);
preloader.addEventListener(Event.COMPLETE, handleComplete);
preloader.addEventListener(FlexEvent.INIT_PROGRESS, handleInitProgress);
preloader.addEventListener(FlexEvent.INIT_COMPLETE, handleInitComplete);
}
override public function initialize():void {
imageControl = new Loader();
imageControl.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderCompleteHandler);
imageControl.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, handleIOError);
imageControl.load(new URLRequest("assets/SomeSkin.swf"));
}
private function loaderCompleteHandler(event:Event):void {
imageControl.content["qqq"].scaleX = 0;//ползунок
addChild(imageControl);
this.x = this.stage.stageWidth/2 - imageControl.contentLoaderInfo.width/2;
this.y = this.stage.stageHeight/2 - imageControl.contentLoaderInfo.height/2;
}
private function handleProgress(event:ProgressEvent):void {
var perc:Number = event.bytesLoaded / event.bytesTotal;
if (imageControl.content) {
imageControl.content["qqq"].scaleX = perc;
imageControl.content["perc"].text = perc * 100;//строка с цифрами
}
}
private function handleComplete(event:Event):void{
}
private function handleInitProgress(event:Event):void {
}
private function handleInitComplete(event:Event):void {
dispatchEvent(new Event(Event.COMPLETE));
}
private function handleIOError(event:IOErrorEvent):void {
}
}
}
Может где чего не так, но думаю, суть ясна.
zorexundra
19.09.2011, 10:51
Хм... неужели разработчики Adobe не подумали о локализации стандартного прелоадера?!
Dimitry_II, я переиначу вопрос темы: Локализация стандартного прелоадера.
Прелоадер, точнее класс отображающий загрузку должен реализовывать IPreloaderDisplay (http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/mx/preloaders/IPreloaderDisplay.html). Никакие текстовые составляющие в этот интерфейс не входят и их может и не быть (как например в прелоадере по-умолчанию в SDK 4.x). Более того, на этапе выполнения прелоадера ресурсы с локализацией еще не доступны и нет возможности сделать динамическую локализацию, как в приложении. В прелоадере, который использовался в SDK 3.x (он по прежнему доступен и вы можете указать его в качестве прелоадера) вы можете поменять надпись на этапе инициализации приложения. Наиболее гибкий вариант создать свой прелоадер и локализовывать его через flashVars.
zorexundra
19.09.2011, 13:07
В прелоадере, который использовался в SDK 3.x (он по прежнему доступен и вы можете указать его в качестве прелоадера) вы можете поменять надпись на этапе инициализации приложения.
alatar, можете пояснить кодом?
<Application
...
preinitialize="application1_preinitializeHandler(event)">
protected function application1_preinitializeHandler(event:FlexEvent):void
{
DownloadProgressBar.initializingLabel = "Инициализация";
}
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.