alexandr_ratush писал(а):Вот проведите такой тест у себя:
миллисекунд 2117
секунд 2.117
alexandr_ratush писал(а):А сколько весит ваша загружаемая флешка? Может она слишком маленькая?
Почти 9 мб
alexandr_ratush писал(а):Да, забыл написать, я тестировал работу метода setPercent с помощью слайдера, у которого мин = 0, максимум 1 с шагом 0.01.
Не понял эту часть)
Вот целиком проект:
class Preloader
Код: Выделить всё
package { import flash.display.Sprite; import flash.display.Loader; import flash.events.Event; import flash.events.IOErrorEvent; import flash.events.SecurityErrorEvent; import flash.events.ProgressEvent; import flash.net.URLRequest; import flash.utils.getTimer; public class Preloader extends Sprite { public var loader:Loader; private var preloaderView:PreloaderView; private var _timeLoad:Number; public function Preloader() { trace("Запущен класс Preloader"); // создаем объект который будет отображать процесс загрузки preloaderView = new PreloaderView(); // помещаем наш прелоадер на середину флеш-ролика preloaderView.x = (stage.stageWidth - preloaderView.width) / 2; preloaderView.y = (stage.stageHeight - preloaderView.height) / 2; this.addChild(preloaderView); //загружаем ролик и отслеживаем основные события loader = new Loader(); // слушаем событие окончания загрузки loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete); // слушаем событие прогресса загрузки loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgress); loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onIOError); loader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError); loader.load(new URLRequest("Main.swf")); _timeLoad = getTimer(); } /* обработчики событий */ function onComplete(event:Event):void { trace("Загружено"); _timeLoad = getTimer() - _timeLoad; trace("миллисекунд " + _timeLoad); trace("секунд " + _timeLoad / 1000); addChild(loader); } function onIOError(event:IOErrorEvent):void { trace("IOErrorEvent: " + event.errorID); } function onSecurityError(event:SecurityErrorEvent):void { trace("SecurityErrorEvent: " + event.errorID); } function onProgress(event:ProgressEvent):void { var percent:Number; percent = event.bytesLoaded/event.bytesTotal; preloaderView.setPercent(percent); trace((percent * 100) + " %"); } }}
Класс который будет отображать процесс загрузки
Код: Выделить всё
package { import flash.display.BlendMode; import flash.display.Shape; import flash.display.Sprite; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.text.TextFormat; import flash.text.TextFormatAlign; class PreloaderView extends Sprite { private var background:Shape; private var fill:Shape; private var textField:TextField; public function PreloaderView() { trace("Запущен класс PreloaderView"); // создаем фон загрузчика background = new Shape(); background.graphics.beginFill(0xFFFF00, 1); background.graphics.drawRect(0, 0, 300, 40); background.graphics.endFill(); this.addChild(background); // плашка которая будет отображать прогресс загрузки fill = new Shape(); fill.graphics.beginFill(0x00FF00, 1); fill.graphics.drawRect(0, 0, 300, 40); fill.graphics.endFill(); fill.scaleX = 0; this.addChild(fill); // содаем текстовое поле которое будет отображать проценты загрузки var format:TextFormat = new TextFormat('Tahoma', 30); format.align = TextFormatAlign.CENTER; textField = new TextField(); textField.defaultTextFormat = format; textField.width = 300; textField.height = 60; textField.mouseEnabled = false; textField.textColor = 0xFFFFFF; this.addChild(textField); } // Метод который необходимо вызвать извне, чтобы отобразить процент загрузки public function setPercent(value:Number):void { trace("Percent " + value); if (value < 0) value = 0; if (value > 1) value = 1; fill.scaleX = value; textField.text = Math.floor(value*100)+"%"; } }}
Я хз в чем проблема.
Может, запустите его у себя?