参考文章1:http://www.68design.net/Web-Guide/Flash/10228-1.html
参考文章2:http://blog.csdn.net/ak47zc123/article/details/5251616
假设外部的XML文件和SWF在同一目录里,叫my_video.xml内容是:
<?xml version="1.0" encoding="utf-8" ?>
<video_info>
<video_name>视频1</video_name>
<video_path>video/index1.flv</video_path>
</video_info>
则在flash第一帧写:
var myXML:XML = new XML();
var XML_URL:String = "my_video.xml";
var myXMLURL:URLRequest = new URLRequest(XML_URL);
var myLoader:URLLoader = new URLLoader(myXMLURL);
myLoader.addEventListener(Event.COMPLETE, xmlLoaded);
function xmlLoaded(event:Event):void
{
myXML = XML(myLoader.data);
var vp:String = myXML.video_path;
trace(vp);//结果是:video/index1.flv
}
====================================================
如果XML里有多个重复的数据,比如my_videolist.xml内容是:
<?xml version="1.0" encoding="utf-8"?>
<video_info>
<name addr="video/index1.flv">视频1</name>
<name addr="video/index2.flv">视频2</name>
<name addr="video/index3.flv">视频3</name>
<name addr="video/index4.flv">视频4</name>
<name addr="video/index5.flv">视频5</name>
</video_info>
flash里:
var myXML:XML = new XML();
var XML_URL:String = "my_videolist.xml";
var myXMLURL:URLRequest = new URLRequest(XML_URL);
var myLoader:URLLoader = new URLLoader(myXMLURL);
var my_Array:Array = new Array();
var my_Array2:Array = new Array();
myLoader.addEventListener(Event.COMPLETE, xmlLoaded);
function xmlLoaded(event:Event):void
{
myXML = XML(myLoader.data);
for (var i:Number = 0; i<myXML.name.length(); i++)
{
my_Array[i] = myXML.name[i];
my_Array2[i] = myXML.name[i]. @ addr;//name标签的addr属性值
trace(my_Array[i]+"的地址:"+my_Array2[i]);
}
}
输出结果:
视频1的地址:video/index1.flv
视频2的地址:video/index2.flv
视频3的地址:video/index3.flv
视频4的地址:video/index4.flv
视频5的地址:video/index5.flv
================================================
全部的视频播放代码如下:
//读取XML文件里的视频路径
var myXML:XML = new XML();
var XML_URL:String = "my_video.xml";
var myXMLURL:URLRequest = new URLRequest(XML_URL);
var myLoader:URLLoader = new URLLoader(myXMLURL);
myLoader.addEventListener(Event.COMPLETE, xmlLoaded);
//建立视频
var video:Video = new Video();
addChild(video);
var nc:NetConnection = new NetConnection();
nc.connect(null);
var ns:NetStream = new NetStream(nc);
ns.client = {};
ns.client.onMetaData = ns_onMetaData;
function xmlLoaded(event:Event):void
{
myXML = XML(myLoader.data);
var vp:String = myXML.video_path;//video_info.xml里有个标签叫<video_path>
ns.play(vp);
video.attachNetStream(ns);
}
//视频信息的获取和设置
function ns_onMetaData(item:Object):void
{
trace(item.duration);//获取总时长
trace(ns.time);
// Resize video instance.
video.width = item.width;
video.height = item.height;
// Center video instance on Stage.
video.x = (stage.stageWidth - video.width) / 2;
video.y = (stage.stageHeight - video.height) / 2;
//ns.seek(20);//从第20秒开始播放
}
//侦听视频流的开始和末尾
ns.addEventListener(NetStatusEvent.NET_STATUS, statusHandler);
function statusHandler(event: NetStatusEvent):void
{
trace(event.info.code);
if (event.info.code == "NetStream.Play.Stop")
{
goURL();
}
}
function goURL()
{
var my_req:URLRequest = new URLRequest("index_in2.aspx");
navigateToURL(my_req,"_self");
}
/*
//需要在FLV视频里添加CuePoint(提示点)才可以用
//提示点不一定需要重新编辑视频,可以利用flvtool2等工具就可以写入
ns.client.onCuePoint = ns_onCuePoint;
function ns_onCuePoint(item:Object):void {
trace("cuePoint");
trace(item.name + "\t" + item.time);
trace(ns.time);
}
*/