![]() |
|
||||||||||
|
|||||
|
Регистрация: Jan 2013
Сообщений: 1
|
Я новичок во Флэш, мне на сайт нужно сделать прелоадер для SWF файлов.
Как я понимаю, структура обычного Flash прелоадера такова: получает ссылку на SWF файл, качает его, параллельно выводит информацию о статусе загрузки, затем отображает содержимое. В интернете нашел много уроков по созданию прелоадеров, но ни в одном не сказано, как подгрузить нужный файл, и как затем его отобразить. Может кто подскажет, как это сделать или поделится ссылкой на исходники готового прелоадера ? |
|
|||||
|
Регистрация: Jan 2013
Сообщений: 126
|
Прелоадеры бывают внешние и внутренние. Если основная флешка тяжелая, лучше воспользоваться внешней.
Даже не знаю что тебе посоветовать, в сети столько примеров, готовые классы есть. |
|
|||||
|
Регистрация: Dec 2006
Сообщений: 1,764
|
можно вот так:
var g:Loader = new Loader(); g.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loop); g.contentLoaderInfo.addEventListener(Event.COMPLETE, done); g.load(new URLRequest("грузим_нашу_прелесть.swf")); function loop(e:ProgressEvent):void { var perc:Number = e.bytesLoaded / e.bytesTotal; percent.text = Math.ceil(perc*100).toString(); } function done(e:Event):void { removeChild(percent); percent = null; addChild(l); }
__________________
а за окном атлантический океан! |
|
|||||
|
Регистрация: Dec 2009
Сообщений: 125
|
Цитата:
Вот FDшный: package { import flash.display.DisplayObject; import flash.display.MovieClip; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.Event; import flash.events.IOErrorEvent; import flash.events.ProgressEvent; import flash.text.TextField; import flash.utils.getDefinitionByName; public class Preloader extends MovieClip { private var _progressField:TextField; public function Preloader() { if (stage) { stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; //stage.showDefaultContextMenu = false; _progressField = new TextField(); _progressField.width = 40; _progressField.height = 40; _progressField.x = stage.stageWidth / 2 - 20; _progressField.y = stage.stageHeight / 2 - 20; addChild(_progressField); } addEventListener(Event.ENTER_FRAME, checkFrame); loaderInfo.addEventListener(ProgressEvent.PROGRESS, progress); loaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioError); } private function ioError(e:IOErrorEvent):void { trace(e.text); } private function progress(e:ProgressEvent):void { _progressField.text = Math.floor(100 / e.bytesTotal * e.bytesLoaded) + "%"; } private function checkFrame(e:Event):void { if (currentFrame == totalFrames) { stop(); loadingFinished(); } } private function loadingFinished():void { removeEventListener(Event.ENTER_FRAME, checkFrame); loaderInfo.removeEventListener(ProgressEvent.PROGRESS, progress); loaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, ioError); removeChild(_progressField); _progressField = null; startup(); } private function startup():void { var mainClass:Class = getDefinitionByName("Main") as Class; addChild(new mainClass() as DisplayObject); } } } |
|
|||||
|
Регистрация: Jul 2008
Сообщений: 912
|
вот готовый внешний, самый подходящий для данного случая:
package { import flash.display.*; import flash.events.*; import flash.net.URLRequest; import flash.text.*; public class SlimLoader extends Sprite{ private var loader:Loader; private var progressOutput:TextField; public function SlimLoader(){ createLoader(); createProgressIndicator(); //"http://../*.swf" load(new URLRequest("*.swf")); } private function createLoader():void{ loader = new Loader(); loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progressListener); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeListener); loader.contentLoaderInfo.addEventListener(Event.INIT, initListener); } private function createProgressIndicator():void{ progressOutput = new TextField(); progressOutput.autoSize = TextFieldAutoSize.LEFT; progressOutput.background = true; progressOutput.border = true; progressOutput.x = 200; progressOutput.y = 150; progressOutput.selectable = false; progressOutput.text = "LOADING..."; } private function load (urlRequest:URLRequest):void{ loader.load(urlRequest); if(!contains(progressOutput)){ addChild(progressOutput); } } private function progressListener(e:ProgressEvent):void{ progressOutput.text = "LOADING: " + Math.floor(e.bytesLoaded / 1027) + "/" + Math.floor(e.bytesTotal / 1027) + "kB"; } private function initListener(e:Event):void{ } private function completeListener(e:Event):void{ removeChild(progressOutput); stage.addChild(loader.content); } } } |
|
|||||
|
Регистрация: Jan 2013
Сообщений: 126
|
Сейчас будем соревноваться у кого какой прелоадер?
Цитата:
|
|
|||||
|
Регистрация: Dec 2006
Сообщений: 1,764
|
с понятием классы знаком? а подгружаемый файл можешь подгружать откуда тебе лучше
__________________
а за окном атлантический океан! |
![]() |
![]() |
Часовой пояс GMT +4, время: 20:21. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|