| Varlamov_AS |
12.01.2012 11:35 |
Создание ProgressBar
Доброго времени суток. Изучаю создание прелоадеров.
Ситуация такая: сделал загрузчик (немного коряво, но вроде работает) с выводом процента загруженных данных.
Код AS3:
package {
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.ProgressEvent;
import flash.net.URLLoader;
import flash.net.URLRequest;
// Собственно класс с полосой загрузки
import progressBar.ProgressBar;
public class PreLoader extends MovieClip {
public var urlLoader:URLLoader = new URLLoader();
private var _urlRequest:URLRequest;
private var _progressBar:ProgressBar = new ProgressBar();
private var _percent:uint = 0;
public function PreLoader() {
super();
stop();
_urlRequest = new URLRequest();
urlLoader.addEventListener(Event.INIT, downloadStart);
urlLoader.addEventListener(Event.COMPLETE, downloadComplete);
urlLoader.addEventListener(ProgressEvent.PROGRESS, downloadProgress);
}
public function startDownload(url:String):void {
_percent = 0;
_progressBar = new ProgressBar();
_progressBar.initDownload();
_urlRequest.url = url;
urlLoader.load(_urlRequest);
}
private function downloadStart(e:Event):void {
this.addChild(_progressBar);
}
public function getProgressBar():ProgressBar {
return _progressBar;
}
private function downloadComplete(e:Event):void {
dispatchEvent(new PreloaderEvent(PreloaderEvent.PRELOADER_LOAD_COMPLETE));
e.target.removeEventListener(Event.INIT, downloadStart);
e.target.removeEventListener(Event.COMPLETE, downloadComplete);
e.target.removeEventListener(ProgressEvent.PROGRESS, downloadProgress);
}
private function downloadProgress(e:ProgressEvent):void {
if (e.target.bytesTotal != 0)
_percent = Math.round((e.target.bytesLoaded / e.target.bytesTotal) * 100);
//Здесь процент загрузки передается в ProgresBar
_progressBar.progress(_percent);
}
}
}
Теперь нужен совет по созданию ProgressBar'a, т.е. как правильнее и лучше организовать полосу загрузки? Может есть какие-то готовые варианты, причем использование Flex нежелательно (Только AS3).
|