Просмотр полной версии : Flash прелоадер
Я новичок во Флэш, мне на сайт нужно сделать прелоадер для SWF файлов.
Как я понимаю, структура обычного Flash прелоадера такова: получает ссылку на SWF файл, качает его, параллельно выводит информацию о статусе загрузки, затем отображает содержимое.
В интернете нашел много уроков по созданию прелоадеров, но ни в одном не сказано, как подгрузить нужный файл, и как затем его отобразить.
Может кто подскажет, как это сделать или поделится ссылкой на исходники готового прелоадера ?
namespaces
16.01.2013, 20:07
Прелоадеры бывают внешние и внутренние. Если основная флешка тяжелая, лучше воспользоваться внешней.
Даже не знаю что тебе посоветовать, в сети столько примеров, готовые классы есть.
можно вот так:
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);
}
Прелоадеры бывают внешние и внутренние. Если основная флешка тяжелая, лучше воспользоваться внешней.
Даже не знаю что тебе посоветовать, в сети столько примеров, готовые классы есть.
Внешний или внутренний, определяется поставленной задачей, а не размером флешки.
Вот 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);
}
}
}
[Frame(factoryClass="Preloader")]
public class Main extends Sprite {
Sintesis
16.01.2013, 20:30
вот готовый внешний, самый подходящий для данного случая:
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);
}
}
}
namespaces
16.01.2013, 22:20
Сейчас будем соревноваться у кого какой прелоадер?
В интернете нашел много уроков по созданию прелоадеров, но ни в одном не сказано, как подгрузить нужный файл, и как затем его отобразить.
Вы хоть объясните куда будет вставляться подгружаемый файл. Копи-пастить я тоже могу.
с понятием классы знаком? а подгружаемый файл можешь подгружать откуда тебе лучше
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.