stop();
//--------------------- Variables ------------------------//
var nDownload:Number;
var nPlayback:Number;
var totalLength:Number;
//total length(in secs) of movie playing
var currentVideo:Number = 0;
var totalVideos:Number;
var scrubSpeed:Number = 2;
//scrubbing speed when scrub buttons are pressed
var paused:Boolean = false;
//whether movie is paused or not
var movieEnded:Boolean;
var aVideos:Array = new Array();
//boton repetir
btn_repetir._visible=false;
// ---------------------- Carga XML -----------------------//
var videoXML:XML = new XML();
videoXML.ignoreWhite = true;
var rootNode:XMLNode;
var currNode:XMLNode;
videoXML.onLoad = function():Void {
rootNode = this.firstChild;
for (var i:Number = 0; i<rootNode.childNodes.length; i++) {
currNode = rootNode.childNodes[i];
aVideos.push({source:currNode.attributes["source"], title:currNode.attributes["title"], author:currNode.attributes["author"], year:currNode.attributes["year"]});
}
totalVideos = aVideos.length;
populateList();
};
videoXML.load("videos.php");
//------------------------------List Box and Fields-------------------------------//
var cList:Object = mcTab.mcPlaylist.cList;
cList.vScrollPolicy = "auto";
var listListener:Object = new Object();
cList.addEventListener("change", listListener);
listListener.change = function() {
var index:Number = cList.selectedIndex;
currentVideo = index;
populateFields(index);
playVideo(aVideos[index].source);
};
function populateList():Void {
for (var i:Number = 0; i<totalVideos; i++) {
cList.addItem(aVideos[i].title);
}
cList.selectedIndex = currentVideo;
populateFields(0);
playVideo(aVideos[0].source);
}
function populateFields(index:Number):Void {
tTitle.text = aVideos[index].title;
tYear.text = aVideos[index].year;
tAuthor.text = aVideos[index].author;
}
// ---------------- NetConnection and NetStream Objects --------------//
var nc:NetConnection = new NetConnection();
nc.connect(null);
var ns:NetStream = new NetStream(nc);
ns.setBufferTime(2);
mcVideo.oVideo.attachVideo(ns);
function playVideo(video:String):Void {
movieEnded = false;
mcBuffer._visible = true;
clearIntervals();
ns.play(video);
nDownload = setInterval(downloadProgress, 1000/24);
nPlayback = setInterval(playback, 1000/24);
}
//-----------------------------------onStatus Event Handlers -------------------//
ns.onStatus = function(oInfo:Object):Void {
trace(oInfo.code);
if (oInfo.code == "NetStream.Play.Start") {
trace("movie has started");
}
if (oInfo.code == "NetStream.Play.Stop") {
//trace("stop");
clearInterval(nPlayback);
movieEnded = true;
mcBuffer._visible = false;
}
if (oInfo.code == "NetStream.Play.StreamNotFound") {
//trace("movie cannot be found");
}
if (oInfo.code == "NetStream.Buffer.Full") {
mcBuffer._visible = false;
}
if (oInfo.code == "NetStream.Buffer.Empty" && !movieEnded) {
//trace("buffer empty");
mcBuffer._visible = true;
//buffer is empty now we need to check if remaining movie time is less buffer requirement
var timeRemaining:Number = totalLength-ns.time;
if (int(totalLength)> Math.ceil(ns.time)) {
ns.setBufferTime(timeRemaining);
} else { // go to next movie
mcControls.mcNext.onRelease()
}
}
};
ns["onMetaData"] = function (oInfo:Object):Void {
totalLength = oInfo.duration;
};
//----------------------------- Download Progress --------------------//
var nBytesLoaded:Number;
var nBytesTotal:Number;
var percentageLoaded:Number;
function downloadProgress():Void {
nBytesLoaded = ns.bytesLoaded;
nBytesTotal = ns.bytesTotal;
percentageLoaded = nBytesLoaded/nBytesTotal*100;
mcProgressBar.mcDownloadBar._xscale = percentageLoaded;
if (percentageLoaded == 100) {
clearInterval(nDownload);
}
}
//----------------------------------------PLAYBACk PROGRESS ----------------------------------//
var percentPlayed:Number;
function playback():Void {
percentPlayed = ns.time/totalLength*100;
tTime.text = (totalLength) ? convertToTime(ns.time, true)+" / "+convertToTime(totalLength) : convertToTime(ns.time, true);
mcProgressBar.mcPlayhead._x = percentPlayed*1.5;
}
/**
* Helper function to display time based on seconds
* @param secs:Numbers, seconds to convert
* @return String, formated time
*/
function convertToTime(secs:Number, round:Boolean):String {
if(round) secs = Math.ceil(secs)
var min = int(secs/60);
if (min<10) {
min = "0"+min;
} else if (min>59) {
//add hours if neccesary
min = min%60;
var hours = int(min/60);
if (hours<10) {
hours = "0"+hours;
}
if (min<10) {
min = "0"+min;
}
}
var segs = int(((secs%60)*100)/100);
if (segs<10) {
segs = "0"+segs;
}
return (hours) ? hours+":"+min+":"+segs : min+":"+segs;
}
//-------------------------- Playback controls and Scrub-------------------//
mcControls.mcPlay.onRelease = function():Void {
if (paused) {
ns.pause();
paused = !paused;
}
};
mcControls.mcNext.onRelease = function():Void {
currentVideo++;
if (currentVideo == totalVideos) {
//currentVideo = 0;
//---------------BOTON REPETIR----------------//
btn_repetir._visible=true;
btn_repetir.onRelease=function(){
//funcion para reproducir de nuevo
gotoAndPlay(1);
}
}
cList.selectedIndex = currentVideo;
populateFields(currentVideo);
playVideo(aVideos[currentVideo].source);
};
mcControls.mcPrevious.onRelease = function():Void {
currentVideo--;
if (currentVideo<0) {
currentVideo = totalVideos-1;
}
cList.selectedIndex = currentVideo;
populateFields(currentVideo);
playVideo(aVideos[currentVideo].source);
};
mcControls.mcForward.onPress = function():Void {
this.onEnterFrame = function():Void {
ns.seek(ns.time+scrubSpeed);
};
};
mcControls.mcForward.onRelease = function():Void {
delete this.onEnterFrame;
};
mcControls.mcRewind.onPress = function():Void {
this.onEnterFrame = function():Void {
ns.seek(ns.time-scrubSpeed);
};
};
mcControls.mcRewind.onRelease = function():Void {
delete this.onEnterFrame;
};
mcControls.mcPause.onRelease = function():Void {
ns.pause();
paused = !paused;
};
mcProgressBar.mcPlayhead.onPress = function():Void {
clearInterval(nPlayback);
this.startDrag(true, 0, this._y, mcProgressBar.mcDownloadBar._xscale*1.5, this._y);
this.onEnterFrame = function():Void {
ns.seek(this._x*totalLength/150);
};
};
mcProgressBar.mcPlayhead.onRelease = function():Void {
this.stopDrag();
delete this.onEnterFrame;
nPlayback = setInterval(playback, 1000/24);
};
mcProgressBar.mcPlayhead.onReleaseOutside = mcProgressBar.mcPlayhead.onRelease;
//-------------------------- MUTE BUTTON ----------------------------------------------------//
var flvSound_mc:MovieClip = _root.createEmptyMovieClip("flvSound_mc", _root.getNextHighestDepth());
flvSound_mc.attachAudio(ns);
var soundHolder_sound:Sound = new Sound(flvSound_mc);
soundHolder_sound.setVolume(100);
mcMute.onRelease = function():Void {
if (soundHolder_sound.getVolume() == 100) {
soundHolder_sound.setVolume(0);
mcMute.gotoAndStop(2);
} else {
soundHolder_sound.setVolume(100);
mcMute.gotoAndStop(1);
}
};
//-----------------------------------TOOL TIPs For controls--------------------------------------------//
mcTip.tText.autoSize = "left";
mcControls.mcPlay.onRollOver = toolTip;
mcControls.mcForward.onRollOver = toolTip;
mcControls.mcRewind.onRollOver = toolTip;
mcControls.mcNext.onRollOver = toolTip;
mcControls.mcPrevious.onRollOver = toolTip;
mcControls.mcPause.onRollOver = toolTip;
mcControls.mcPlay.onRollOut = resetTip;
mcControls.mcRewind.onRollOut = resetTip;
mcControls.mcForward.onRollOut = resetTip;
mcControls.mcNext.onRollOut = resetTip;
mcControls.mcPrevious.onRollOut = resetTip;
mcControls.mcPause.onRollOut = resetTip;
mcControls.mcPlay.onRollOut = resetTip;
function toolTip():Void {
switch (this) {
case _level0.mcControls.mcNext :
mcTip.tTip.text = "next";
break;
case _level0.mcControls.mcPrevious :
mcTip.tTip.text = "previous";
break;
case _level0.mcControls.mcForward :
mcTip.tTip.text = "forward";
break;
case _level0.mcControls.mcRewind :
mcTip.tTip.text = "rewind";
break;
case _level0.mcControls.mcPlay :
mcTip.tTip.text = "play";
break;
case _level0.mcControls.mcPause :
mcTip.tTip.text = "pause";
break;
}
this.onEnterFrame = function():Void {
mcTip._x = _xmouse;
};
}
function resetTip():Void {
delete this.onEnterFrame;
mcTip.tTip.text = "";
}
//-------------------------PLAYLIST TAB FUNCTIONALITY ----//
mcTab.mcHit.onRollOver = function():Void {
mcTab.play();
};
//-----------------------------clear intervals ---------------------//
function clearIntervals():Void {
clearInterval(nDownload);
clearInterval(nPlayback);
}