Простий зовнішній прелоадер на ActionScript 3.0
Продовжую тему прелоадера на ActionScript. Але на цей раз створимо найпростіший зовнішній прелоадер на ActionScript 3.0. Принцип роботи зовнішнього предзагрузчіка flash-роликів простий: ролик-прелоадер завантажує зовнішній флеш-ролик (точно також, як якщо б він завантажував картинку або текстовий документ) і відображає процес завантаження.
Зовні це буде виглядати наступним чином (в даному прикладі завантаження swf-ролика не відбувається, а тільки показується зацикленная анімація самого прелоадера):
Перевагою зовнішнього флеш-прелоадера є те, що він більш точно відображає процес завантаження swf-ролика. Немає такої тимчасової затримки між початком відображення flash-ролика і початком роботи предзагрузчіка, яка спостерігається в разі використання вбудованого прелоадера. Є, звичайно, і свої недоліки (так, наприклад, у багатьох зовнішніх прелоадера спостерігаються проблеми з правильним позиціонуванням, масштабуванням завантажених роликів і т. Д.).
Код ActionScript 3.0:
/ * Імпорт класів * / import flash.display.Sprite; import flash.display.Loader; import flash.display.LoaderInfo; import flash.events.Event; import flash.events.IOErrorEvent; import flash.events.SecurityErrorEvent; import flash.events.ProgressEvent; import flash.net.URLRequest; / * Встановлюємо значення змінних * / var w: uint = 200; // ширина прелоадера var h: uint = 10; // висота прелоадера var containerColor: uint = 0xffffff; // колір фону var preloaderColor: uint = 0xcccccc; // колір фону прелоадера var bandColor: uint = 0x333333; // колір індикатора завантаження / * малюємо контейнер * / var container: Sprite = new Sprite (); container.graphics.beginFill (containerColor, 1); container.graphics.drawRect (0,0, stage.stageWidth, stage.stageHeight); container.graphics.endFill (); addChild (container); / * Малюємо контейнер прелоадера * / var preloaderContainer: Sprite = new Sprite (); preloaderContainer.graphics.lineStyle (1, bandColor, 1); preloaderContainer.graphics.beginFill (preloaderColor, 1); preloaderContainer.graphics.drawRect (0,0, w, h); preloaderContainer.graphics.endFill (); container.addChild (preloaderContainer); / * Поміщаємо наш прелоадер на середину флеш-ролика * / preloaderContainer.x = (stage.stageWidth - w) / 2; preloaderContainer.y = (stage.stageHeight - h) / 2; / * Малюємо індикатор завантаження * / var band: Sprite = new Sprite (); band.graphics.beginFill (bandColor, 1); band.graphics.drawRect (0,0, w, h); band.graphics.endFill (); preloaderContainer.addChild (band); band.scaleX = 0; / * Завантажуємо ролик і відстежуємо основні події (які події відстежувати і як на них реагувати ви вирішите самі, але, як мінімум нам необхідно стежити за COMPLETE і PROGRESS) * / var loader: 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 ( "content / simple3d_5.swf")); / * Якщо треба, щоб завантажуються флеш-ролики не кешувати, то можна так: loader.load (new URLRequest ( "simple3d_5.swf? Rand =" + new Date (). Time)); * / / * Обробники подій * / function onComplete (event: Event): void * удаляем прелоадер */ container.removeChild(preloaderContainer); /* добавляем загруженный ролик на сцену */ container.addChild(loader);> function onIOError (event: IOErrorEvent): void
Завантажити вихідні до даного уроку можна за наступним посиланням - завантажити вихідні (під Adobe Flash CS5).