Tengo un componente de reproducción de videos que lee de un xml. Utiliza un buffer. El problema que tengo es que se inicia en reproducción el video y yo quiero que cargue el buffer sin reproducir, que lo haga al aretar el boton de play. Les dejo el código.
Código:
  
Gracias por todo. //---------------------  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 = 5;
//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();
// ---------------------- Load 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.xml");
//------------------------------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(5);
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("movie ended");		
		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;
	}
	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);
}
 
  
 

 Frenar reproduccion de video
 Frenar reproduccion de video 
