【AS3】Flash读取XML内容的方法(附加载一个视频的例子)

参考文章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);
}
*/


 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值