【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>
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>
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]); } } 输出结果: ? ================================================ //读取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); } */ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |