|
|
|||||
Регистрация: Dec 2011
Сообщений: 31
|
Custom Flex Preloader
Доброго времени суток.
Передо мной встала задача создания прелоадера самой флешки. Программа написана на AS 3.0/Flex без использования Movie CLip'ов. После долгих часов "чтения интернетов" получился такой вариант: package { import flash.display.*; import flash.events.*; import mx.events.FlexEvent; import mx.preloaders.DownloadProgressBar; import mx.preloaders.IPreloaderDisplay; public class Preloader extends DownloadProgressBar implements IPreloaderDisplay { [Embed(source="gui/progressBar/progressBarSources/background.png")] private var _backGround:Class; [Embed(source="gui/progressBar/progressBarSources/frontground.png")] private var _frontGround:Class; private var _imgBackGround:Bitmap = new _backGround; private var _imgFrontGround:Bitmap = new _frontGround; public function Preloader() { 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 { this.addChild(_imgBackGround); this.addChild(_imgFrontGround); this.x = this.stage.stageWidth / 2 - _imgBackGround.width / 2; this.y = this.stage.stageHeight / 2 - _imgFrontGround.height / 2; } private function loaderCompleteHandler(event:Event):void { // } private function handleProgress(event:ProgressEvent):void { var percentage:Number = event.bytesLoaded / event.bytesTotal; if (percentage <= 1) { _imgFrontGround.scaleX = 1 - percentage; _imgFrontGround.x = uint(_imgBackGround.width * percentage) + 1; } if (percentage > 1) _imgFrontGround.visible = false; } 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 { } } } P.S.: используется прелоадер следующим образом: Последний раз редактировалось Varlamov_AS; 16.01.2012 в 11:54. |
|
|||||
Регистрация: Dec 2011
Сообщений: 31
|
Есть некоторые проблемы.
1) Меня волнуют пустые обработчики. Мне кажется, что это угрожает стабильности. 2) Почему-то если выводить процентаж через trace, он всегда 1 (100%): private function handleProgress(event:ProgressEvent):void { var percentage:Number = event.bytesLoaded / event.bytesTotal; trace(percentage); if (percentage <= 1) { _imgFrontGround.scaleX = 1 - percentage; _imgFrontGround.x = uint(_imgBackGround.width * percentage) + 1; } if (percentage > 1) _imgFrontGround.visible = false; } |
|
|||||
Цитата:
Цитата:
|
|
|||||
Глобальная проблема с писателями прелоадеров, особенно если размер прелоадера стремится к размеру приложения.
Цитата:
Вы для какой версии SDK писали этот прелоадер? Цитата:
__________________
משיח לא בא משיח גם לא מטלפן |
|
|||||
Регистрация: Dec 2011
Сообщений: 31
|
Версия SDK: flex_sdk_4.6.0.23201B
А загружал локально, с винчестера. |
|
|||||
Цитата:
Цитата:
Для примера можете посмотреть код mx.preloaders.SparkDownloadProgressBar
__________________
משיח לא בא משיח גם לא מטלפן |
|
|||||
Регистрация: Dec 2011
Сообщений: 31
|
Получатся локально я никак не смогу качественно протестировать прелоадер?
А за советы и помощь большое спасибо, буду дальше разбираться. |
|
|||||
Тестировать можно по разному. Визуально и с родным приложением в комплекте? Только с доп. инструментами, типа древнего Speed Simulator.
__________________
משיח לא בא משיח גם לא מטלפן |
Часовой пояс GMT +4, время: 01:43. |
|
« Предыдущая тема | Следующая тема » |
Теги |
preloader |
|
|