XML FILE STRUCTURE
<gallery>
<vid>
<vidurl>video_01.swf</vidurl>
<desc>DESCRIPTION 01</desc>
</vid>
<vid>
<vidurl>video_02.swf</vidurl>
<desc>DESCRIPTION 2</desc>
</vid>
</gallery>
++++++++++++++++++++++++++++++++++++++++++++++++
AS3 FRAME CODE
++++++++++++++++++++++++++++++++++++++++++++++++
stop();
//// INITIATE YOUR COUNTER VARIABLE
var counter:Number = 0;
//// INITIATE YOUR NEWALPHA VARIABLE
var newAlpha:Number = 0;
//// VARS
var desc:String;
var url:String;
var urlReq:URLRequest;
/// INITIATE YOUR LOADER
var ldr:Loader = new Loader();
ldr.name = "myDisplay";// <====== VERY IMPORTANT WE USE THIS TO REMOVE THE CHILD
ldr.x = 0;
ldr.y = 0;
///// HANDLE XML
var mainXML:XML;
var loaderXML:URLLoader = new URLLoader();
loaderXML.addEventListener(Event.COMPLETE, onComplete);
loaderXML.load(new URLRequest("videolist.xml"));
function onComplete(event:Event):XML {
try {
mainXML = new XML(loaderXML.data);
init(mainXML);
} catch (event:Error) {
trace("Error: " + event.message);
return;
}
}
function init(mainXML) {
/// SPECIFY THE LOCATION OF YOUR DEFAULT SOURCE
url = mainXML.vid[counter].vidurl.text();
desc = mainXML.vid[counter].desc.text();
/// REQUEST THE VIDEO FROM THE SPECIFIED URL
urlReq = new URLRequest(url);
/// "ATTACH" THE VIDEO INTO THE LOADER
ldr.load(urlReq);
//// DISPLAY THE STARTING VALUE OF videosDescription = desc
//// IN descriptionDisplay FIELD
descriptionDisplay.text = desc;
//// DISPLAY THE STARTING VALUE OF COUNTER
//// IN counterDisplay FIELD AS A STRING
//// TO BE COMPATIBLE WITH THE TEXT FIELD CONTENT
counterDisplay.text = counter.toString();
}
// THIS IS THE PRELOADER INFORMATION
// CHECK THE VALUES OF THE THE BYTESLOADED/BYTESTOTAL
// NOTICE THE progressEvent.PROGRESS EVENT
ldr.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, checkProgress);
function checkProgress(event:ProgressEvent):void {
preloader.text = Math.round(event.bytesLoaded/event.bytesTotal*100) + "%";
}
///////////////
// ONLY IF THE LOADING PROCESS IS COMPLETE
// GO AHEAD AND ADD THE CHILD
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, createLdr);
function createLdr(event:Event):void {
/// GIVE BIRTH TO THE LOADER ON THE STAGE
addChild(ldr);
}
/// INCREASE THE VALUE OF COUNTER BY 1
/// EVERY TIME YOU CLICK ON PLUS BUTTON
PLUS.addEventListener(MouseEvent.CLICK, plus);
function plus(event:MouseEvent):void {
counter += 1;
if (counter > mainXML.vid.length() - 1) {
counter = 0;
}
//// CALL THE changeVideo FUNCTION
changeVideo(counter);
newAlpha = 0;
}
/// DECREASE THE VALUE OF COUNTER BY 1
/// EVERY TIME YOU CLICK ON MINUS BUTTON
MINUS.addEventListener(MouseEvent.CLICK, minus);
function minus(event:MouseEvent):void {
counter -= 1;
if (counter < 0) {
counter = mainXML.vid.length() - 1;
}
//// CALL THE changeVideo FUNCTION
changeVideo(counter);
newAlpha = 0;
}
// THIS FUNCTION IS AVAILABLE FOR BOTH
// THE PLUS AND MINUS ACTIONS
// WHENEVER YOU CLICK ON EITHER BUTTON
// IT SENDS THE VALUE OF counter
// AND THE FUNCTION LOADS THE VIDEOS
// PLACED IN mainXML.vid[counter].vidurl.text() IN THE LOADER
function changeVideo(counter) {
// UNLOAD EXISTING IMAGE
ldr.unload();
// SILENCE ALL POSSIBLE SOUNDS
SoundMixer.stopAll();
// LOAD REQUIRED VIDEO
url = mainXML.vid[counter].vidurl.text();
urlReq = new URLRequest(url);
ldr.load(urlReq);
var i:Number;
// CHANGE THE CONTENT OF DISPLAY FIELDS
counterDisplay.text = counter.toString();
descriptionDisplay.text = mainXML.vid[counter].desc.text();
}
stage.addEventListener(Event.ENTER_FRAME, changeAlpha);
function changeAlpha(event:Event):void {
newAlpha += .05;
if (newAlpha > 1) {
newAlpha = 1;
}
ldr.alpha = newAlpha;
ldr.scaleX = newAlpha;
ldr.scaleY = newAlpha;
ldr.x = newAlpha * 50;
ldr.y = newAlpha * 50;
///// THE PRELOADER WAS ADDED TO THE TOP LEVEL
///// SO THAT WHEN THE NEW EXTERNAL FILE IS LOADED
///// THE PRELOADER INFORMATION WILL BE HIDDEN BY THE NEW FILE
///// BE CAREFUL WITH TRANSPARENT SWF FILES
preloader.x = ldr.x;
preloader.y = ldr.y;
}
++++++++++++++++++++++++++++++++++++++++++++++++
AS3 MOVIECLIP MENU CODE
++++++++++++++++++++++++++++++++++++++++++++++++
var myScene:String;
//// CREATE THE EVENT LISTENERS FOR YOUR
//// SCENE BUTTONS
INTRO.addEventListener(MouseEvent.CLICK, changeScene); // INTRO SCENE
VIDEOS.addEventListener(MouseEvent.CLICK, changeScene); // VIDEOS SCENE
///// CHANGE SCENE FUNCTION
function changeScene(event:MouseEvent):void {
myScene = event.target.name; /// RETRIEVE SCENE NAME FROM BUTTON NAME
//// IF THE NAME OF THE SCENE IS DIFFERENT FROM "VIDEOS"
if (myScene !== "VIDEOS") {
// GO AHEAD AND DELETE THE ADDED LOADER
// BY USING A CUSTOM MADE FUNCTION
// CALLED deleteVideo();
deleteVideo();
}
///// JUMP TO THE NEW SCENE
MovieClip(parent).gotoAndStop(1, myScene);
}
function deleteVideo() {
var i:Number; /// COUNTER FOR ALL THE CHILDREN ON THE STAGE
for ( i=0; i<MovieClip(parent).numChildren; i++ ) {
//// IF THERE IS ONE INSTANCE CALLED myDisplay
if (MovieClip(parent).getChildAt(i).name == "myDisplay") {
//// REMOVE THAT CHILD FROM DISPLAY LIST
MovieClip(parent).removeChildAt(i);
//// STOP ALL THE SOUNDS
SoundMixer.stopAll();
}
}
}