С особой благодарностью JoãoCésar Этот код as3 создает функцию для генерации загрузчика SWF. Он использовал инкрементное значение (число) для циклического перебора массива, в котором хранится динамическая информация о каждом загрузчике. В этом случае count% swfs.length приведет к 0, 1, 0, 1 ... Эффективная загрузка SWF в последовательности цикла.
Так вот ИДЕЯ:
Как сохранить или запомнить, когда в последний раз файл SWF закрывался, и в следующий раз вы просто начинаете с этого ... (Он должен помнить, какой файл SWF завершен, и в следующий раз вы начнете с этого файла вместо child1. swf)
Для этого я использовал SharedObject и попытался сохранить номер SWF-файла, который только что загружен в переменную, но я не могу правильно обработать его ...
Спасибо
Вот код:
import com.greensock.*;
import com.greensock.loading.*;
import com.greensock.events.LoaderEvent;
import flash.display.DisplayObjectContainer;
import flash.events.Event;
var count:uint = 0;
var currentSWFLoader:SWFLoader;
var swf:Object = {};
var swfs:Array =
[
{path:"child1.swf", container:this},
{path:"child2.swf", container:this}
]
function generateSWFLoader(path:String, container:DisplayObjectContainer):SWFLoader
{
return new SWFLoader
(
path,
{
container: container,
y: 100,
onProgress:progressHandler,
onComplete:completeHandler,
autoPlay: false
}
);
}
function loadSWF(index:uint):void
{
if (currentSWFLoader)
currentSWFLoader.dispose(true);
swf = swfs[index];
currentSWFLoader = generateSWFLoader(swf.path, swf.container);
currentSWFLoader.load();
}
function progressHandler(e:LoaderEvent):void
{
bar.scaleX = e.target.progress;
}
function completeHandler(e:LoaderEvent):void
{
e.target.rawContent.play();
addEventListener(Event.ENTER_FRAME, checkFrame);
}
function checkFrame(e:Event):void
{
if (currentSWFLoader.rawContent.currentFrame == currentSWFLoader.rawContent.totalFrames)
{
trace("swf done playing");
removeEventListener(Event.ENTER_FRAME, checkFrame);
loadSWF(++count % swfs.length);
}
}
bar.scaleX = 0;
loadSWF(count % swfs.length);