Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Кастомизация стандартного прелоадера (http://www.flasher.ru/forum/showthread.php?t=168074)

zorexundra 16.09.2011 15:49

Локализация стандартного прелоадера
 
Прошу прощения, если у кого-нибудь мой вопрос вызовет аскому.
Как в стандартном прелоадоре апликации заменить слова "loading", "initialize" на русскоязычные аналоги, IDE FB 4.0? Спасибо!

Dimitry_II 16.09.2011 18:24

Во-первых, указываем в Application
Код AS3:

<mx:Application ... preloader="CustomPreloader">

А потом сам CustomPreloader:
Код AS3:

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, я переиначу вопрос темы: Локализация стандартного прелоадера.

alatar 19.09.2011 12:24

Прелоадер, точнее класс отображающий загрузку должен реализовывать IPreloaderDisplay. Никакие текстовые составляющие в этот интерфейс не входят и их может и не быть (как например в прелоадере по-умолчанию в SDK 4.x). Более того, на этапе выполнения прелоадера ресурсы с локализацией еще не доступны и нет возможности сделать динамическую локализацию, как в приложении. В прелоадере, который использовался в SDK 3.x (он по прежнему доступен и вы можете указать его в качестве прелоадера) вы можете поменять надпись на этапе инициализации приложения. Наиболее гибкий вариант создать свой прелоадер и локализовывать его через flashVars.

zorexundra 19.09.2011 13:07

Цитата:

Сообщение от alatar (Сообщение 1032437)
В прелоадере, который использовался в SDK 3.x (он по прежнему доступен и вы можете указать его в качестве прелоадера) вы можете поменять надпись на этапе инициализации приложения.

alatar, можете пояснить кодом?

alatar 19.09.2011 14:01

Цитата:

<Application
...
preinitialize="application1_preinitializeHandler(event)">
Код AS3:

protected function application1_preinitializeHandler(event:FlexEvent):void
{
      DownloadProgressBar.initializingLabel = "Инициализация";
}



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

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