Here is a class to load single or multiple external/child swf files in the main/parent swf at run-time.
CODE
USAGE
CODE
package
{
import flash.display.Sprite;
import flash.display.Loader;
import flash.display.MovieClip;
import flash.net.URLRequest;
import flash.events.Event;
import flash.events.IEventDispatcher;
import flash.events.ProgressEvent;
import flash.events.SecurityErrorEvent;
import flash.events.HTTPStatusEvent;
import flash.events.IOErrorEvent;
/**
* @file CSwfLoader.as
* @author Abhishek Kumar
*/
public class CSwfLoader
{
public var _Proceed:Function;
private var swfLoader:Loader;
private var swfRequest:URLRequest;
private var swfPathList:Array;
private var swfList:Array = [];
private var swfTemp:MovieClip;
private var swfCount:int;
public function CSwfLoader()
{
swfLoader = new Loader();
swfRequest = new URLRequest();
}
public function startLoading(swfPaths:Array):void
{
swfPathList = swfPaths;
loadSWF(swfPathList[0]);
}
private function loadSWF(path:String):void
{
initiateListeners(swfLoader.contentLoaderInfo);
swfRequest.url = path;
swfLoader.load(swfRequest);
}
private function initiateListeners (dispatcher:IEventDispatcher):void
{
trace ("CSwfLoader -> initiateListeners: ");
dispatcher.addEventListener (Event.COMPLETE, completeHandler);
dispatcher.addEventListener (Event.OPEN, openHandler);
dispatcher.addEventListener (ProgressEvent.PROGRESS, progressHandler);
dispatcher.addEventListener (SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
dispatcher.addEventListener (HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
dispatcher.addEventListener (IOErrorEvent.IO_ERROR, ioErrorHandler);
}
private function destroyListeners (dispatcher:IEventDispatcher):void
{
trace ("CSwfLoader -> destroyListeners: ");
dispatcher.removeEventListener (Event.COMPLETE, completeHandler);
dispatcher.removeEventListener (Event.OPEN, openHandler);
dispatcher.removeEventListener (ProgressEvent.PROGRESS, progressHandler);
dispatcher.removeEventListener (SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
dispatcher.removeEventListener (HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
dispatcher.removeEventListener (IOErrorEvent.IO_ERROR, ioErrorHandler);
}
private function completeHandler (event:Event):void
{
trace ("CSwfLoader -> completeHandler: " + event);
destroyListeners(swfLoader.contentLoaderInfo);
swfTemp = event.target.content as MovieClip;
swfTemp.customID = swfCount;
swfList.push(swfTemp);
if (swfCount < swfPathList.length - 1)
{
swfCount++;
initiateListeners(swfLoader.contentLoaderInfo);
loadSWF(swfPathList[swfCount]);
}
else
{
swfLoader.unload();
swfLoader = null;
_Proceed (swfList);
}
}
private function openHandler (event:Event):void
{
trace ("CSwfLoader -> openHandler: " + event);
}
private function progressHandler (event:ProgressEvent):void
{
trace ("CSwfLoader -> progressHandler loaded:" + event.bytesLoaded + " total: " + event.bytesTotal);
}
private function securityErrorHandler (event:SecurityErrorEvent):void
{
trace ("CSwfLoader -> securityErrorHandler: " + event);
}
private function httpStatusHandler (event:HTTPStatusEvent):void
{
trace ("CSwfLoader -> httpStatusHandler: " + event);
}
private function ioErrorHandler (event:IOErrorEvent):void
{
trace ("CSwfLoader -> ioErrorHandler: " + event);
}
}
}
USAGE
package
{
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;
/**
* @file Main.as
* @author Abhishek Kumar
*/
public class Main extends MovieClip
{
private var _swfPathArr:Array = [
'../asset/swf_1.swf',
'../asset/swf_2.swf',
'../asset/swf_3.swf',
'../asset/swf_4.swf',
'../asset/swf_5.swf',
'../asset/swf_6.swf'
];
private var _swfClipsArr:Array = [];
public function Main()
{
var oSwfLoader:CSwfLoader = new CSwfLoader();
oSwfLoader._Proceed = onCompletePreloading;
oSwfLoader.startLoading(_swfPathArr);
}
private function onCompletePreloading(list:Array):void
{
_swfClipsArr = list;
btn1_mc.buttonMode = true;
btn2_mc.buttonMode = true;
btn3_mc.buttonMode = true;
btn4_mc.buttonMode = true;
btn5_mc.buttonMode = true;
btn6_mc.buttonMode = true;
btn1_mc.addEventListener(MouseEvent.CLICK, setContent);
btn2_mc.addEventListener(MouseEvent.CLICK, setContent);
btn3_mc.addEventListener(MouseEvent.CLICK, setContent);
btn4_mc.addEventListener(MouseEvent.CLICK, setContent);
btn5_mc.addEventListener(MouseEvent.CLICK, setContent);
btn6_mc.addEventListener(MouseEvent.CLICK, setContent);
}
private function setContent(event:MouseEvent):void
{
var _swfToAdd:MovieClip;
switch(event.target.name)
{
case "btn1_mc": _swfToAdd = _swfClipsArr[0] as MovieClip; break;
case "btn2_mc": _swfToAdd = _swfClipsArr[1] as MovieClip; break;
case "btn3_mc": _swfToAdd = _swfClipsArr[2] as MovieClip; break;
case "btn4_mc": _swfToAdd = _swfClipsArr[3] as MovieClip; break;
case "btn5_mc": _swfToAdd = _swfClipsArr[4] as MovieClip; break;
case "btn6_mc": _swfToAdd = _swfClipsArr[5] as MovieClip; break;
}
contentContainer.removeChildAt(contentContainer.numChildren-1);
contentContainer.addChild(_swfToAdd);
//Ex: How to access internal movieclips of loaded swf
_swfToAdd.title_mc.visible = false;
trace(_swfToAdd.customID);
}
}
}
Comments
Post a Comment