<?xml version="1.0" standalone="yes"?>
<?xml-stylesheet type="text/xsl" href="css/rss.xslt"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>7Yue's Weblog - Action Script</title><link>http://www.7yue.com/</link><description>RIA,Flex,Flash,ActionScript,FlashVideo,AIR - </description><generator>RainbowSoft Studio Z-Blog 1.8 Walle Build 91204</generator><language>zh-CN</language><copyright>Copyright 2007 www.7yue.com. Some Rights Reserved. 京ICP备05064035号_uacct = &amp;quot;UA-1804923-1&amp;quot;;urchinTracker();</copyright><pubDate>Thu, 09 Sep 2010 14:59:16 +0800</pubDate><item><title>[技术峰会]AS3 Drawing API演讲稿</title><author>zerlot@gmail.com (7yue)</author><link>http://www.7yue.com/post/443.html</link><pubDate>Mon, 26 Apr 2010 21:52:11 +0800</pubDate><guid>http://www.7yue.com/post/443.html</guid><description><![CDATA[<p>下面的幻灯是我在此次技术平台峰会的演讲稿，有兴趣的朋友可以查看一下。</p><p><object width="365" height="400" codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"><param value="https://acrobat.com/Clients/current/ADCMainEmbed.swf" name="movie" /><param value="high" name="quality" /><param value="transparent" name="wmode" /><param value="#202020" name="bgcolor" /><param value="sameDomain" name="allowScriptAccess" /><param value="true" name="allowFullScreen" /><param value="d=--4uC0Pv95ZMm2volf8vNA" name="flashvars" /> 	<embed width="365" height="400" align="middle" pluginspage="http://www.adobe.com/go/getflashplayer" flashvars="d=--4uC0Pv95ZMm2volf8vNA" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="sameDomain" wmode="transparent" quality="high" loop="false" play="true" bgcolor="#202020" src="https://acrobat.com/Clients/current/ADCMainEmbed.swf"></embed> 	    </object></p>]]></description><category>Action Script</category><comments>http://www.7yue.com/post/443.html#comment</comments><wfw:comment>http://www.7yue.com/</wfw:comment><wfw:commentRss>http://www.7yue.com/feed.asp?cmt=443</wfw:commentRss><trackback:ping>http://www.7yue.com/cmd.asp?act=tb&amp;id=443&amp;key=af1e4c12</trackback:ping></item><item><title>Keith Peters的Flash ActionScript 3.0动画高级教程中文版上市</title><author>zerlot@gmail.com (7yue)</author><link>http://www.7yue.com/post/412.html</link><pubDate>Thu, 31 Dec 2009 12:57:14 +0800</pubDate><guid>http://www.7yue.com/post/412.html</guid><description><![CDATA[来自Keith Peters的书籍AdvancED ActionScript 3.0 Animation的中文版上架了，这本书是由人民邮电出版社出版，属于图灵程序设计丛书中的一本，中文版的名字叫做“Flash ActionScript 3.0动画高级教程”，各位开发者朋友一定不要被中文的“朴素”名称给迷惑了，这其实是面向Flash ActionScript3开发人员的非常牛X的一本书。如果你有学习过相关的计算机科学的知识，然后又是从事AS3的开发人员，我个人认为你只需要2本书，一本是这本，另外一本是它的姊妹篇：Foundation ActionScript 3.0 Animation，中文是Flash ActionScript 3.0动画教程，少了“高级”2个字。<br/>由于在Adobe工作，通过公司的美国同事有幸很早就认识了Keith Peters，又相对于中文这本书籍看过其英文原版（确切是其中若干章节），于是出版社的朋友就邀请我为这本书写一下推荐评语，我可以非常认真的告诉各位，我非常严肃认真客观的对这本书的内容给出了我的评语（如果你买了书，你就会在书封底上看到）：<br/>“Keith Peters是全球Flash领域最棒的技术大师之一，在他编著的这本书中，每一处都散发着FlashActionScript游戏开发的魅力：精辟的算法解释，精确的AS3API的驾驭手段，精美的演示范例。在基于Flash游戏创作需求呈爆炸性增长的互联网领域，本书是Flash动画游戏开发工程师通向高级殿堂的最佳学习图书。”<br/><img onload="ResizeImage(this,520)" src="http://images.china-pub.com/ebook45001-50000/49232/zcover.jpg" alt="" title=""/><br/>另外，通过社区和在线网站，我也获悉此书的翻译水平得到了很多资深AS3开发者的一致认可，我非常高兴英文书籍的内容能够得以高质量的中文翻译，这也解决了很多常见的英文书籍翻成中文书籍后，国人看不懂的问题。最后，真心希望这本书和他的姊妹篇的中文版能够帮助很多国内的AS3开发人员，尤其是英文苦手，祝愿各位都能在AS3的应用开发上越来越牛。<br/>（注：当当和China-pub都有在线销售了）]]></description><category>Action Script</category><comments>http://www.7yue.com/post/412.html#comment</comments><wfw:comment>http://www.7yue.com/</wfw:comment><wfw:commentRss>http://www.7yue.com/feed.asp?cmt=412</wfw:commentRss><trackback:ping>http://www.7yue.com/cmd.asp?act=tb&amp;id=412&amp;key=d5af5ae0</trackback:ping></item><item><title>一个普遍存在的问题</title><author>zerlot@gmail.com (7yue)</author><link>http://www.7yue.com/post/375.html</link><pubDate>Thu, 24 Sep 2009 10:19:04 +0800</pubDate><guid>http://www.7yue.com/post/375.html</guid><description><![CDATA[现在开始接触ActionScript3编程的爱好者越来越多，他们可以选择从不同的角度来学习AS3，书籍，教程，博客，开放源码项目等等。我最近发现一个有趣的现象，就是AS3的部分教程中都存在一个小问题，就是当面向初学者提供某些范例和教程时，这些内容并未从良好的编程经验或者是习惯入手，而是寄期望于日后的学习中，再了解更好的，更加值得使用的方法，我在想，为什么很多教程或文章不能一开始就提供最佳实践相关的内容给爱好者呢？这样，既提高了学习的效率，也减少了学习的弯路。<br/><br/>比如，下列的一小段代码出自某本O'Reilly的书籍<br/>书中这段代码目的是让开发者了解AS3在SWF中的处理优先级是大于可视化效果的，于是，就先用这样的一段代码来说明：<br/><p class="code"><code>for&nbsp;(var&nbsp;i:int&nbsp;=&nbsp;0;&nbsp;i&lt;50;&nbsp;i++){<br/>&nbsp;&nbsp;myClip.x+=2;<br/>}<br/></code></p>这段代码为了说明在循环中，MC的位置根本就不会按照for循环一样，呈现x坐标的递加，而是直接跳转到最后循环结束时x坐标的位置上去，这其实没什么问题，但是下面的代码，则是说，开发者可以使用Event.ENTER_FRAME事件来触发一个侦听函数，在侦听函数中处理一个MC的移动。<br/><p class="code"><code>myClip.addEventListener(Event.ENTER_FRAME,slideClip);<br/>function&nbsp;slideClip(evt:Event):void{<br/>&nbsp;&nbsp;if&nbsp;(myClip.x&nbsp;&lt;100){<br/>&nbsp;&nbsp;&nbsp;&nbsp;myClip.x&nbsp;+=&nbsp;2;<br/>&nbsp;&nbsp;}&nbsp;else&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;myClip.removeEventListener(Event.ENTER_FRAME,slideClip);<br/>&nbsp;&nbsp;}<br/>}<br/></code></p>开发者在学习这段代码的时候，尤其是初学者，就对Event.ENTER_FRAME有了深刻的印象，于是乎，随着他的学习曲线，以后对于AS3中对于MC的动态处理，他们自然而然的就会不断的用到ENTER_FRAME，甚至于不断的将各种处理机制都放入其中。结果显而易见，大量的应用性能和灵活性问题随之而来，或许在若干长的时间过后，才听到有讲座说，ENTER_FRAME是一个不推荐的编程方式，更推荐大家用Timer云云之类的说法。<br/>这些类似的教程内容本身没有什么错，为了演示一个功能或特点，使用了最容易实现的方法来说明问题，如果这是一个售前工程师的工作，那么这种方式是完美的，如果是面向读者和学习的人，这种方法是粗心的，不考虑学习成本和效率的，因为它直接导致了开发者的常用编程方式，直到开发者积累了一定的经验，抑或是付出了一定的代价之后，才会发现有更好的方式，更加的性能来实现同样的结果。所以，如果写书或者是教程，我觉的更好的一点是多考虑一下学习者的成本和曲线，不要为了达到目的，而让学习者获取了一个实际并不可取的方法。<br/><br/>记得以前我就发现过这样的问题，在MSDN上，存在着大量的代码和范例，结果用到后来，才发现是不好的和有很大代价的内容，我就在想，为啥不能在我学习的时候就告诉我一个更好的方法呢？]]></description><category>Action Script</category><comments>http://www.7yue.com/post/375.html#comment</comments><wfw:comment>http://www.7yue.com/</wfw:comment><wfw:commentRss>http://www.7yue.com/feed.asp?cmt=375</wfw:commentRss><trackback:ping>http://www.7yue.com/cmd.asp?act=tb&amp;id=375&amp;key=c638a5df</trackback:ping></item><item><title>AR一定会更火</title><author>zerlot@gmail.com (7yue)</author><link>http://www.7yue.com/post/302.html</link><pubDate>Tue, 05 May 2009 09:42:28 +0800</pubDate><guid>http://www.7yue.com/post/302.html</guid><description><![CDATA[<p>曾经在Blog里提到过使用AS3开发的虚拟现实的FLARKit，现在有很多应用已经开始使用FLARKit或者相关AR技术。</p><p>Bruce Lee AR Demo (by 梦飞)</p><p>http://blog.80s.net.cn/?p=522</p><p>GE AR Demo</p><p>http://ge.ecomagination.com/smartgrid/?c_id=Matter#/augmented_reality</p><p>Living Sasquatch</p><p>http://www.livingsasquatch.com/</p><p>Ronald Chevalier</p><p>http://ronaldchevalier.com/mindportal/</p><p>Nissan:</p><p>http://www.youtube.com/watch?v=C6Ayc5Tb9vI</p><p>Macro Tempest</p><p>http://www.engadget.com/2009/04/30/marco-tempests-augmented-reality-card-trick-makes-david-copperf/</p><p>你也感兴趣么，赶紧去研究一下FLARKit吧！说不定将来很多大公司的产品都用这种AR+互动的手法来宣传产品了，而那是你已经是一个有经验的开发人员了，财源滚滚来， :)</p>]]></description><category>Action Script</category><comments>http://www.7yue.com/post/302.html#comment</comments><wfw:comment>http://www.7yue.com/</wfw:comment><wfw:commentRss>http://www.7yue.com/feed.asp?cmt=302</wfw:commentRss><trackback:ping>http://www.7yue.com/cmd.asp?act=tb&amp;id=302&amp;key=ebf32ed2</trackback:ping></item><item><title>AS3移植手册</title><author>zerlot@gmail.com (7yue)</author><link>http://www.7yue.com/post/300.html</link><pubDate>Mon, 27 Apr 2009 13:02:27 +0800</pubDate><guid>http://www.7yue.com/post/300.html</guid><description><![CDATA[如何降低AS2到AS3过渡的复杂程度，简化AS3学习曲线，Adobe推出了一本AS3 Migration Cookbook，里面做了响应的总结，比AS3 Language Reference的解释更加人性化和条理性。<br/><img onload="ResizeImage(this,520)" src="http://www.7yue.com/upload/as3_migration_cookbook.pdf.jpg" alt="" title=""/><br/>点击这里<a href="http://www.adobe.com/devnet/actionscript/articles/as3_migration_cookbook/as3_migration_cookbook.pdf" target="_blank">下载PDF版本</a>]]></description><category>Action Script</category><comments>http://www.7yue.com/post/300.html#comment</comments><wfw:comment>http://www.7yue.com/</wfw:comment><wfw:commentRss>http://www.7yue.com/feed.asp?cmt=300</wfw:commentRss><trackback:ping>http://www.7yue.com/cmd.asp?act=tb&amp;id=300&amp;key=e4ac269e</trackback:ping></item><item><title>优秀的ActionScript 3.0性能分析文章</title><author>zerlot@gmail.com (7yue)</author><link>http://www.7yue.com/post/298.html</link><pubDate>Sun, 26 Apr 2009 22:40:24 +0800</pubDate><guid>http://www.7yue.com/post/298.html</guid><description><![CDATA[这里有两篇非常非常优秀的文章，是关于深入分析使用ActionScript3.0开发应用的性能分析和建议的文章，一篇是以开发角度，一篇是从评测角度。<br/><br/>第一篇：<br/><a href="http://www.insideria.com/2009/04/51-actionscript-30-and-flex-op.html"  target="_blank">http://www.insideria.com/2009/04/51-actionscript-30-and-flex-op.html</a><br/>第二篇：<br/><a href="http://www.gskinner.com/blog/archives/2009/04/as3_performance.html"  target="_blank">http://www.gskinner.com/blog/archives/2009/04/as3_performance.html</a><br/><br/>作为ActionScript和Flex的开发人员，一定会有所收获！]]></description><category>Action Script</category><comments>http://www.7yue.com/post/298.html#comment</comments><wfw:comment>http://www.7yue.com/</wfw:comment><wfw:commentRss>http://www.7yue.com/feed.asp?cmt=298</wfw:commentRss><trackback:ping>http://www.7yue.com/cmd.asp?act=tb&amp;id=298&amp;key=7a4c7df0</trackback:ping></item><item><title>ActionScript3.cn天地会新增Wiki</title><author>zerlot@gmail.com (7yue)</author><link>http://www.7yue.com/post/260.html</link><pubDate>Mon, 23 Feb 2009 10:36:48 +0800</pubDate><guid>http://www.7yue.com/post/260.html</guid><description><![CDATA[<a href="http://bbs.actionscript3.cn/index.php" target="_blank">ActionScript3.cn天地会论坛</a>是Adobe在中国的User Group之一，是国内目前拥有最大的AS3和Flash Platform相关技术开发人员的社区，他们近期推出了基于Flash Platform相关技术的维基百科站点，作为社区的会员，都可以参与到其中来浏览和编辑相关的技术内容。这个Wik将来i主要集中在汇集开发者原创，翻译，整理的Flash Platform资源。<br/><br/>我本人看到这个非常高兴，我也希望这个wiki能够被热爱AS3和相关Flash,Flex开发的朋友精心呵护，跟所有人一同成长。人人为我，我为人人。<br/><br/><img onload="ResizeImage(this,520)" src="http://pic.yupoo.com/zerlot/8098670581ae/medium.jpg" alt="" title=""/><br/><a href="http://wiki.actionscript3.cn/"  target="_blank">http://wiki.actionscript3.cn/</a><br/>]]></description><category>Action Script</category><comments>http://www.7yue.com/post/260.html#comment</comments><wfw:comment>http://www.7yue.com/</wfw:comment><wfw:commentRss>http://www.7yue.com/feed.asp?cmt=260</wfw:commentRss><trackback:ping>http://www.7yue.com/cmd.asp?act=tb&amp;id=260&amp;key=00d11519</trackback:ping></item><item><title>gskinner发布最新的AS3补间动画类库</title><author>zerlot@gmail.com (7yue)</author><link>http://www.7yue.com/post/253.html</link><pubDate>Fri, 13 Feb 2009 14:09:50 +0800</pubDate><guid>http://www.7yue.com/post/253.html</guid><description><![CDATA[GTween是由国外知名RIA咨询公司gskinner发布的一套使用AS3构造补间动画的类库，这周，他们推出了核心经过重新改写的Beta 5版本，功能异常强大，更令人咂舌的是，这个AS3 Library只有3kb！如果你是AS3开发人员又对于设计超酷的补间动画有需求的话，强烈推荐去尝试GTween这个类库。<br/><br/>GTween的官方站点：<br/><br/><a href="http://www.gskinner.com/libraries/gtween/"  target="_blank">http://www.gskinner.com/libraries/gtween/</a><br/><br/>里面，介绍，文档，Demo，下载一应俱全！]]></description><category>Action Script</category><comments>http://www.7yue.com/post/253.html#comment</comments><wfw:comment>http://www.7yue.com/</wfw:comment><wfw:commentRss>http://www.7yue.com/feed.asp?cmt=253</wfw:commentRss><trackback:ping>http://www.7yue.com/cmd.asp?act=tb&amp;id=253&amp;key=6e673a78</trackback:ping></item><item><title>又一个支持AS3的框架</title><author>zerlot@gmail.com (7yue)</author><link>http://www.7yue.com/post/227.html</link><pubDate>Sun, 04 Jan 2009 10:19:55 +0800</pubDate><guid>http://www.7yue.com/post/227.html</guid><description><![CDATA[<br/><a href="http://www.pranaframework.org/"  target="_blank">http://www.pranaframework.org/</a><br/>]]></description><category>Action Script</category><comments>http://www.7yue.com/post/227.html#comment</comments><wfw:comment>http://www.7yue.com/</wfw:comment><wfw:commentRss>http://www.7yue.com/feed.asp?cmt=227</wfw:commentRss><trackback:ping>http://www.7yue.com/cmd.asp?act=tb&amp;id=227&amp;key=a76c4e60</trackback:ping></item><item><title>Flash Streaming Tool源代码</title><author>zerlot@gmail.com (7yue)</author><link>http://www.7yue.com/post/225.html</link><pubDate>Wed, 24 Dec 2008 14:39:23 +0800</pubDate><guid>http://www.7yue.com/post/225.html</guid><description><![CDATA[这篇文章是将我的Flash Streaming Tool的源代码开放。此小工具没有使用任何应用框架，可以按照方法区分功能，代码很容易看懂。我就不放zip出来了，防止懒人懒到什么都不改，直接就放到其他某个应用中去。再懒也要ctrl-C一下，:D. 另外，还有几个发现的bug没有fix，还有功能有待加强，有兴趣的就自己改进吧<br/><b>主体程序fms7yue.mxml：</b><br/><p class="code"><code>&lt;?xml&nbsp;version="1.0"&nbsp;encoding="utf-8"?&gt;<br/>&lt;mx:WindowedApplication&nbsp;xmlns:mx="http://www.adobe.com/2006/mxml"&nbsp;layout="absolute"&nbsp;width="820"&nbsp;height="650"&nbsp;borderColor="#000000"&nbsp;creationComplete="setup()"&nbsp;title="Flash&nbsp;Streaming&nbsp;Tool"&gt;<br/>&nbsp;&nbsp;&lt;mx:Style&nbsp;source="css/main.css"/&gt;<br/>&nbsp;&nbsp;&lt;mx:Script&nbsp;source="ConnectionManager.as"/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;mx:Script&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;![CDATA[<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;import&nbsp;com.zerlot.utils.OsDetection;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;import&nbsp;net.hires.utils.Stats;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;var&nbsp;play_video:Video;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;var&nbsp;os:OsDetection;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;setup():void{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;play_video=new&nbsp;Video();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trace(play_video.width);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trace(play_video.height);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trace(this);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trace(this.width);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trace(bgcanvas.x);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trace(bgcanvas.y);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.bgcanvas.rawChildren.addChildAt(play_video,1);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bgcanvas.width=play_video.width;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bgcanvas.height=play_video.height;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.play_video.x=0;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.play_video.y=0;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addChildAt(new&nbsp;Stats(),0);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;os=new&nbsp;OsDetection();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.addEventListener(NativeDragEvent.NATIVE_DRAG_ENTER,onDragEnter,false,0,true);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.addEventListener(NativeDragEvent.NATIVE_DRAG_DROP,onDragDrop,false,0,true);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//this.invalidateDisplayList();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;onChangehttp():void{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;filetype.text="URL";<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myrtmpurl.editable=false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;filepathname.text="http://domain/folder/.../*.flv";<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myrtmpurl.visible=false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rtmptitle.text="";<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;live_cb.visible=false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;live_cb.selected=false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;onChangertmp():void{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rtmptitle.text="RTMP&nbsp;URL";<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;filetype.text="Stream";<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myrtmpurl.editable=true;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myrtmpurl.visible=true;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;filepathname.text="sample";<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;live_cb.visible=true;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]]&gt;<br/>&nbsp;&nbsp;&lt;/mx:Script&gt;<br/>&nbsp;&nbsp;&lt;mx:TextInput&nbsp;x="70"&nbsp;y="313"&nbsp;width="265"&nbsp;id="myrtmpurl"&nbsp;text="rtmp://hostname:port/application/instance"/&gt;<br/>&nbsp;&nbsp;&lt;mx:Label&nbsp;x="10"&nbsp;y="316"&nbsp;text="RTMP&nbsp;URL"&nbsp;id="rtmptitle"/&gt;<br/>&nbsp;&nbsp;&lt;mx:Panel&nbsp;x="366"&nbsp;y="13"&nbsp;width="429"&nbsp;height="578"&nbsp;layout="absolute"&nbsp;title="Streaming状态信息"&nbsp;styleName="mypanelTitle"&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;mx:TextArea&nbsp;x="10"&nbsp;y="111"&nbsp;width="389"&nbsp;height="383"&nbsp;wordWrap="true"&nbsp;editable="false"&nbsp;enabled="true"&nbsp;id="FMS_Status"/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;mx:Button&nbsp;x="308"&nbsp;y="502"&nbsp;label="保存到文件"&nbsp;id="saveoutput_btn"&nbsp;click="onSavefile()"/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;mx:Button&nbsp;x="230"&nbsp;y="502"&nbsp;label="清除"&nbsp;width="70"&nbsp;id="clearstatus_btn"&nbsp;click="clearHistory()"/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;mx:ProgressBar&nbsp;id="progress_bar"&nbsp;themeColor="#271FC9"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;minimum="0"&nbsp;visible="true"&nbsp;maximum="100"&nbsp;label="当前播放进度&nbsp;%3%%"&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;direction="right"&nbsp;mode="manual"&nbsp;width="389"&nbsp;labelPlacement="center"&nbsp;x="10"&nbsp;y="5"/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;mx:ProgressBar&nbsp;id="buffer_bar"&nbsp;themeColor="#F20D7A"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;minimum="0"&nbsp;visible="true"&nbsp;maximum="100"&nbsp;label="当前缓冲进度&nbsp;%3%%"&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;direction="right"&nbsp;mode="manual"&nbsp;width="389"&nbsp;labelPlacement="center"&nbsp;y="28"&nbsp;x="10"/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;mx:Label&nbsp;x="43"&nbsp;y="503"&nbsp;text="©2008&nbsp;www.7yue.com"&nbsp;fontSize="14"&nbsp;color="black"/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;mx:Image&nbsp;x="10"&nbsp;y="495"&nbsp;source="assets/version/version.png"/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;mx:Text&nbsp;x="10"&nbsp;y="54"&nbsp;width="389"&nbsp;id="buffer_stats"&nbsp;color="#000000"&nbsp;text=""/&gt;<br/>&nbsp;&nbsp;&lt;/mx:Panel&gt;<br/>&nbsp;&nbsp;&lt;mx:ComboBox&nbsp;x="70"&nbsp;y="355"&nbsp;width="79"&nbsp;editable="false"&nbsp;enabled="true"&nbsp;selectedIndex="0"&nbsp;id="media_type"&nbsp;change="changeMedia()"&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;mx:ArrayCollection&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;mx:Object&nbsp;label="FLV"&nbsp;data="FLV"/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;mx:Object&nbsp;label="MP3"&nbsp;data="MP3"/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;mx:Object&nbsp;label="MP4"&nbsp;data="MP4"/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;mx:Object&nbsp;label="ID3"&nbsp;data="ID3"/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/mx:ArrayCollection&gt;<br/>&nbsp;&nbsp;&lt;/mx:ComboBox&gt;<br/>&nbsp;&nbsp;&lt;mx:Label&nbsp;x="10"&nbsp;y="358"&nbsp;text="File&nbsp;Type"/&gt;<br/>&nbsp;&nbsp;&lt;mx:Label&nbsp;x="10"&nbsp;y="401"&nbsp;text="Stream"&nbsp;id="filetype"/&gt;<br/>&nbsp;&nbsp;&lt;mx:TextInput&nbsp;x="70"&nbsp;y="399"&nbsp;width="265"&nbsp;id="filepathname"&nbsp;text="sample"&nbsp;change="closeStream()"/&gt;<br/>&nbsp;&nbsp;&lt;mx:Label&nbsp;x="10"&nbsp;y="446"&nbsp;text="Buffer"/&gt;<br/>&nbsp;&nbsp;&lt;mx:Label&nbsp;x="10"&nbsp;y="496"&nbsp;text="Seek"/&gt;<br/>&nbsp;&nbsp;&lt;mx:TextInput&nbsp;x="70"&nbsp;y="444"&nbsp;width="79"&nbsp;id="buffertime"&nbsp;text="2"/&gt;<br/>&nbsp;&nbsp;&lt;mx:TextInput&nbsp;x="70"&nbsp;y="494"&nbsp;width="79"&nbsp;id="seektime"/&gt;<br/>&nbsp;&nbsp;&lt;mx:Button&nbsp;x="179"&nbsp;y="495"&nbsp;label="搜索"&nbsp;id="gotoseek"&nbsp;click="onSeek()"/&gt;<br/>&nbsp;&nbsp;&lt;mx:Button&nbsp;x="10"&nbsp;y="567"&nbsp;label="播放"&nbsp;id="fmsplay_btn"&nbsp;click="playBackVideo()"/&gt;<br/>&nbsp;&nbsp;&lt;mx:Button&nbsp;x="70"&nbsp;y="567"&nbsp;label="停止"&nbsp;id="fmsstop_btn"&nbsp;click="closeNC()"/&gt;<br/>&nbsp;&nbsp;&lt;mx:RadioButton&nbsp;x="10"&nbsp;y="535"&nbsp;label="流"&nbsp;id="video_method_stream"&nbsp;selected="true"&nbsp;color="#FFFFFF"&nbsp;click="onChangertmp()"/&gt;<br/>&nbsp;&nbsp;&lt;mx:RadioButton&nbsp;x="70"&nbsp;y="535"&nbsp;label="渐进下载"&nbsp;id="video_method_progressive"&nbsp;color="#FFFFFF"&nbsp;click="onChangehttp()"/&gt;<br/>&nbsp;&nbsp;&lt;mx:Label&nbsp;x="148"&nbsp;y="497"&nbsp;text="sec"/&gt;<br/>&nbsp;&nbsp;&lt;mx:CheckBox&nbsp;x="180"&nbsp;y="444"&nbsp;label="直播"&nbsp;id="live_cb"&nbsp;color="#FFFFFF"/&gt;<br/>&nbsp;&nbsp;&lt;mx:Canvas&nbsp;x="20"&nbsp;y="40"&nbsp;id="bgcanvas"&nbsp;borderStyle="solid"&nbsp;borderColor="white"&nbsp;borderThickness="1"&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;mx:CheckBox&nbsp;x="0"&nbsp;y="0"&nbsp;label="自动调整大小"&nbsp;id="autoSize"&nbsp;color="#FFFFFF"&nbsp;click="onChangeSize()"/&gt;<br/>&nbsp;&nbsp;&lt;/mx:Canvas&gt;<br/>&lt;/mx:WindowedApplication&gt;<br/></code></p><b>ConnectionManager.as，非AS Class类型：</b><br/><p class="code"><code>//&nbsp;ActionScript&nbsp;file<br/>&nbsp;&nbsp;import&nbsp;flash.desktop.ClipboardFormats;<br/>&nbsp;&nbsp;import&nbsp;flash.desktop.NativeDragManager;<br/>&nbsp;&nbsp;import&nbsp;flash.events.Event;<br/>&nbsp;&nbsp;import&nbsp;flash.events.NativeDragEvent;<br/>&nbsp;&nbsp;import&nbsp;flash.events.NetStatusEvent;<br/>&nbsp;&nbsp;import&nbsp;flash.filesystem.File;<br/>&nbsp;&nbsp;import&nbsp;flash.net.NetConnection;<br/>&nbsp;&nbsp;import&nbsp;flash.net.NetStream;<br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;private&nbsp;var&nbsp;my_nc:NetConnection;<br/>&nbsp;&nbsp;[Bindable]<br/>&nbsp;&nbsp;private&nbsp;var&nbsp;play_status:String="stop";<br/>&nbsp;&nbsp;private&nbsp;var&nbsp;in_ns:NetStream;<br/>&nbsp;&nbsp;private&nbsp;var&nbsp;checkUp:Object;<br/>&nbsp;&nbsp;private&nbsp;var&nbsp;currentBW:Number;<br/>&nbsp;&nbsp;private&nbsp;var&nbsp;streamObj:Object=new&nbsp;Object();<br/>&nbsp;&nbsp;private&nbsp;var&nbsp;logfile:File;<br/>&nbsp;&nbsp;private&nbsp;var&nbsp;video_duration:Number;<br/>&nbsp;&nbsp;private&nbsp;var&nbsp;video_width:Number;<br/>&nbsp;&nbsp;private&nbsp;var&nbsp;video_height:Number;<br/>&nbsp;&nbsp;private&nbsp;var&nbsp;progress:Object;<br/><br/>public&nbsp;function&nbsp;playBackVideo():void&nbsp;{<br/>&nbsp;&nbsp;//&nbsp;control&nbsp;path&nbsp;for&nbsp;pause/resume<br/>&nbsp;&nbsp;if&nbsp;(play_status&nbsp;==&nbsp;"play")&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;fmsplay_btn.label&nbsp;=&nbsp;"继续";<br/>&nbsp;&nbsp;&nbsp;&nbsp;play_status&nbsp;=&nbsp;"pause";<br/>&nbsp;&nbsp;&nbsp;&nbsp;in_ns.pause();<br/>&nbsp;&nbsp;&nbsp;&nbsp;return;<br/>&nbsp;&nbsp;}&nbsp;else&nbsp;if&nbsp;(play_status&nbsp;==&nbsp;"pause")&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;play&nbsp;resume<br/>&nbsp;&nbsp;&nbsp;&nbsp;play_status&nbsp;=&nbsp;"play";<br/>&nbsp;&nbsp;&nbsp;&nbsp;fmsplay_btn.label&nbsp;=&nbsp;"暂停";<br/>&nbsp;&nbsp;&nbsp;&nbsp;in_ns.resume();<br/>&nbsp;&nbsp;&nbsp;&nbsp;return;<br/>&nbsp;&nbsp;}<br/>&nbsp;&nbsp;//trace(rtmpurl);<br/>&nbsp;&nbsp;createConnection();<br/>}<br/><br/>private&nbsp;function&nbsp;createConnection():void{<br/>&nbsp;&nbsp;if(video_method_stream.selected){<br/>&nbsp;&nbsp;&nbsp;&nbsp;trace(video_method_stream.selected);<br/>&nbsp;&nbsp;&nbsp;&nbsp;my_nc=new&nbsp;NetConnection();<br/>&nbsp;&nbsp;&nbsp;&nbsp;my_nc.addEventListener(NetStatusEvent.NET_STATUS,checkConnect,false,0,true);<br/>&nbsp;&nbsp;&nbsp;&nbsp;my_nc.connect(myrtmpurl.text,"streaming");<br/>&nbsp;&nbsp;&nbsp;&nbsp;my_nc.client=new&nbsp;Client(FMS_Status);<br/>&nbsp;&nbsp;&nbsp;&nbsp;checkUp=new&nbsp;Object();<br/>&nbsp;&nbsp;}else&nbsp;if(video_method_progressive.selected){<br/>&nbsp;&nbsp;&nbsp;&nbsp;trace("test&nbsp;progressive");<br/>&nbsp;&nbsp;&nbsp;&nbsp;my_nc=new&nbsp;NetConnection();<br/>&nbsp;&nbsp;&nbsp;&nbsp;my_nc.addEventListener(NetStatusEvent.NET_STATUS,checkConnect,false,0,true);<br/>&nbsp;&nbsp;&nbsp;&nbsp;my_nc.connect(null,"progressive");<br/>&nbsp;&nbsp;&nbsp;&nbsp;my_nc.client=new&nbsp;Client(FMS_Status);<br/>&nbsp;&nbsp;&nbsp;&nbsp;checkUp=new&nbsp;Object();<br/>&nbsp;&nbsp;}<br/>}<br/><br/>private&nbsp;function&nbsp;checkConnect(nse:NetStatusEvent):void{<br/>&nbsp;&nbsp;&nbsp;&nbsp;FMS_Status.text&nbsp;+="正在连接......"+"\n";<br/>&nbsp;&nbsp;&nbsp;&nbsp;FMS_Status.text&nbsp;+=&nbsp;"NetConnection&nbsp;onStatus"+"\n";<br/>&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(var&nbsp;i:String&nbsp;in&nbsp;nse.info)&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FMS_Status.text&nbsp;+=i+"&nbsp;:&nbsp;"+nse.info[i]+"\n";<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(nse.info.code&nbsp;==&nbsp;"NetConnection.Connect.Success")&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;createStream(NetConnection(nse.target));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trace(nse.target);<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>}<br/><br/>private&nbsp;function&nbsp;createStream(nc:NetConnection):void{<br/>&nbsp;&nbsp;FMS_Status.text+="NetStream状况:&nbsp;"+"\n";<br/>&nbsp;&nbsp;in_ns=new&nbsp;NetStream(nc);<br/>&nbsp;&nbsp;in_ns.bufferTime=0.5;<br/>&nbsp;&nbsp;play_video.attachNetStream(in_ns);<br/>&nbsp;&nbsp;if&nbsp;(!live_cb.selected)&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;in_ns.play(filepathname.text,0);<br/>&nbsp;&nbsp;}&nbsp;else&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;in_ns.play(filepathname.text);<br/>&nbsp;&nbsp;}<br/>&nbsp;&nbsp;in_ns.addEventListener(NetStatusEvent.NET_STATUS,showStream);<br/>}<br/><br/>private&nbsp;function&nbsp;showStream(nse:NetStatusEvent):void{<br/>&nbsp;&nbsp;for(var&nbsp;i:String&nbsp;in&nbsp;nse.info){<br/>&nbsp;&nbsp;&nbsp;&nbsp;FMS_Status.text+=i+":&nbsp;"+nse.info[i]+"\n";<br/>&nbsp;&nbsp;}<br/>&nbsp;&nbsp;if(nse.info.code=="NetStream.Play.Stop"){<br/>&nbsp;&nbsp;&nbsp;&nbsp;play_status="stop";<br/>&nbsp;&nbsp;&nbsp;&nbsp;fmsplay_btn.label="播放";<br/>&nbsp;&nbsp;}<br/>&nbsp;&nbsp;if(nse.info.code=="NetStream.Play.Start"){<br/>&nbsp;&nbsp;&nbsp;&nbsp;play_status="play";<br/>&nbsp;&nbsp;&nbsp;&nbsp;fmsplay_btn.label="暂停";<br/>&nbsp;&nbsp;}<br/>&nbsp;&nbsp;streamObj.onMetaData=onMetaDataHandler;<br/>&nbsp;&nbsp;streamObj.onPlayStatus=onPlayStatusHandler;<br/>&nbsp;&nbsp;in_ns.client=streamObj;<br/>&nbsp;&nbsp;progress=new&nbsp;Progressmanager(in_ns,buffer_stats,buffer_bar,video_duration,progress_bar);<br/>}<br/><br/>private&nbsp;function&nbsp;onPlayStatusHandler(info:Object):void{<br/>&nbsp;&nbsp;for(var&nbsp;i:String&nbsp;in&nbsp;info){<br/>&nbsp;&nbsp;&nbsp;&nbsp;FMS_Status.text+=i+":"+info[i]+"\n";<br/>&nbsp;&nbsp;}<br/>&nbsp;&nbsp;if(info.code=="NetStream.Play.Complete"){<br/>&nbsp;&nbsp;&nbsp;&nbsp;play_status="stop";<br/>&nbsp;&nbsp;&nbsp;&nbsp;in_ns.close();<br/>&nbsp;&nbsp;&nbsp;&nbsp;fmsplay_btn.label="播放";<br/>&nbsp;&nbsp;}<br/>}<br/><br/>private&nbsp;function&nbsp;onMetaDataHandler(info:Object):void{<br/>&nbsp;&nbsp;for&nbsp;(var&nbsp;i:String&nbsp;in&nbsp;info)&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FMS_Status.text&nbsp;+=i+":&nbsp;"+info[i]+"\n";<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;video_duration&nbsp;=&nbsp;info.duration;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(autoSize.selected&nbsp;&&&nbsp;info.width&nbsp;&&&nbsp;info.height)&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;video_width&nbsp;=&nbsp;play_video.width;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;video_height&nbsp;=&nbsp;play_video.height;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;play_video.width&nbsp;=&nbsp;info.width;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;play_video.height&nbsp;=&nbsp;info.height;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;video_width&nbsp;=&nbsp;info.width;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;video_height&nbsp;=&nbsp;info.height;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;switch(info.videocodecid){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;2:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FMS_Status.text+="本视频是Sorenson&nbsp;H.263格式.\n";<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;3:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FMS_Status.text+="本视频是Screen&nbsp;Video格式，只能支持FP7以上版本.\n";<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;4:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FMS_Status.text+="本视频是On2&nbsp;VP6格式.\n";<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;5:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FMS_Status.text+="本视频是On2&nbsp;VP6具备alpha通道格式.\n";<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设定真实的Buffer时间<br/>&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;可以动态的设置buffer时间<br/>&nbsp;&nbsp;&nbsp;&nbsp;in_ns.bufferTime=Number(buffertime.text);<br/>}<br/><br/><br/>private&nbsp;function&nbsp;closeStream():void{<br/>&nbsp;&nbsp;if(in_ns!=null){<br/>&nbsp;&nbsp;play_status="stop";<br/>&nbsp;&nbsp;in_ns.close();<br/>&nbsp;&nbsp;progress.setBufferStats(play_status);<br/>&nbsp;&nbsp;fmsplay_btn.label="播放";<br/>&nbsp;&nbsp;}else{<br/>&nbsp;&nbsp;return;<br/>&nbsp;&nbsp;}<br/>}<br/><br/>private&nbsp;function&nbsp;closeNC():void{<br/>&nbsp;&nbsp;play_status="stop";<br/>&nbsp;&nbsp;my_nc.close();<br/>&nbsp;&nbsp;progress.setBufferStats(play_status);<br/>&nbsp;&nbsp;fmsplay_btn.label="播放";<br/>&nbsp;&nbsp;os=null;<br/>}<br/><br/>private&nbsp;function&nbsp;clearHistory():void{<br/>&nbsp;&nbsp;FMS_Status.text="";<br/>}<br/><br/>private&nbsp;function&nbsp;changeMedia():void{<br/>&nbsp;&nbsp;if(media_type.selectedItem.data&nbsp;==&nbsp;"MP3"){<br/>&nbsp;&nbsp;&nbsp;&nbsp;filepathname.text&nbsp;=&nbsp;"mp3:";<br/>&nbsp;&nbsp;}else&nbsp;if&nbsp;(media_type.selectedItem.data&nbsp;==&nbsp;"ID3"){<br/>&nbsp;&nbsp;&nbsp;&nbsp;filepathname.text&nbsp;=&nbsp;"id3:";<br/>&nbsp;&nbsp;}else&nbsp;if&nbsp;(media_type.selectedItem.data=="MP4"){<br/>&nbsp;&nbsp;&nbsp;&nbsp;filepathname.text&nbsp;=&nbsp;"mp4:";<br/>&nbsp;&nbsp;}else{<br/>&nbsp;&nbsp;&nbsp;&nbsp;filepathname.text="";<br/>&nbsp;&nbsp;}<br/>}<br/><br/>private&nbsp;function&nbsp;onSeek():void{<br/>&nbsp;&nbsp;in_ns.seek(Number(seektime.text));<br/>}<br/><br/>private&nbsp;function&nbsp;onSavefile():void{<br/>&nbsp;&nbsp;//logfile=File.applicationStorageDirectory;<br/>&nbsp;&nbsp;//logfile=logfile.resolvePath("logs/");<br/>&nbsp;&nbsp;//trace(logfile.url);<br/>&nbsp;&nbsp;var&nbsp;dir:File&nbsp;=File.applicationDirectory;<br/>&nbsp;&nbsp;//dir.resolvePath("logs");<br/>&nbsp;&nbsp;trace(dir.url);<br/>&nbsp;&nbsp;var&nbsp;docsDir:File&nbsp;=&nbsp;File.documentsDirectory;<br/>&nbsp;&nbsp;try<br/>&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;docsDir.browseForSave("Save&nbsp;as：");<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;docsDir.addEventListener(Event.SELECT,&nbsp;saveData);<br/>&nbsp;&nbsp;}<br/>&nbsp;&nbsp;catch&nbsp;(error:Error)<br/>&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trace("Failed:",&nbsp;error.message)<br/>&nbsp;&nbsp;}<br/>&nbsp;&nbsp;//dir.addEventListener(Event.SELECT,&nbsp;dirSelected);<br/>&nbsp;&nbsp;//logfile.browseForDirectory("Select&nbsp;a&nbsp;directory");<br/>}<br/><br/>private&nbsp;function&nbsp;saveData(event:Event):void{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;newFile:File&nbsp;=&nbsp;event.target&nbsp;as&nbsp;File;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;str:String&nbsp;=&nbsp;FMS_Status.text;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;stream:FileStream&nbsp;=&nbsp;new&nbsp;FileStream();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stream.open(newFile,&nbsp;FileMode.WRITE);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stream.writeUTFBytes(str);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stream.close();<br/>}<br/><br/>private&nbsp;function&nbsp;onChangeSize():void{<br/>&nbsp;&nbsp;if(video_height&nbsp;!=&nbsp;0&nbsp;&&&nbsp;video_width&nbsp;!=&nbsp;0)&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;temp_w:Number&nbsp;=&nbsp;play_video.width;<br/>&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;temp_h:Number&nbsp;=&nbsp;play_video.height;<br/>&nbsp;&nbsp;&nbsp;&nbsp;play_video.width&nbsp;=&nbsp;video_width;<br/>&nbsp;&nbsp;&nbsp;&nbsp;play_video.height&nbsp;=&nbsp;video_height;<br/>&nbsp;&nbsp;&nbsp;&nbsp;video_width&nbsp;=&nbsp;temp_w;<br/>&nbsp;&nbsp;&nbsp;&nbsp;video_height&nbsp;=&nbsp;temp_h;<br/>&nbsp;&nbsp;}<br/>}<br/>//&nbsp;Drag&nbsp;and&nbsp;Drop&nbsp;feature<br/><br/>private&nbsp;function&nbsp;onDragEnter(nde:NativeDragEvent):void{<br/>&nbsp;&nbsp;var&nbsp;dragFile:Object=nde.clipboard.getData(ClipboardFormats.FILE_LIST_FORMAT);<br/>&nbsp;&nbsp;trace(dragFile[0].name);<br/>&nbsp;&nbsp;if&nbsp;(dragFile[0].extension=="flv"&nbsp;||&nbsp;dragFile[0].extension&nbsp;==&nbsp;"mov"&nbsp;||&nbsp;dragFile[0].extension&nbsp;==&nbsp;"mp4"&nbsp;||&nbsp;dragFile[0].extension==&nbsp;"mp3"){<br/>&nbsp;&nbsp;&nbsp;&nbsp;NativeDragManager.acceptDragDrop(this);<br/>&nbsp;&nbsp;}<br/>}<br/><br/>private&nbsp;function&nbsp;onDragDrop(nde:NativeDragEvent):void{<br/>&nbsp;&nbsp;var&nbsp;dragFile:Object=nde.clipboard.getData(ClipboardFormats.FILE_LIST_FORMAT);<br/>&nbsp;&nbsp;trace(dragFile[0].url);<br/>&nbsp;&nbsp;video_method_progressive.selected=true;<br/>&nbsp;&nbsp;onChangehttp();<br/>&nbsp;&nbsp;filepathname.text=dragFile[0].url;<br/>}<br/><br/></code></p><br/><b>Client.as，AS Class文件，带宽检测部分：</b><br/><p class="code"><code>//如果FMS服务器端Application.xml的&lt;BandwidthDetection&nbsp;enabled="true"&gt;，那么必须客户端包含以下代码<br/>package<br/>{<br/>&nbsp;&nbsp;import&nbsp;mx.controls.TextArea;<br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;internal&nbsp;class&nbsp;Client{<br/>&nbsp;&nbsp;private&nbsp;var&nbsp;currentBW:Number;<br/>&nbsp;&nbsp;private&nbsp;var&nbsp;checkUp:Object;<br/>&nbsp;&nbsp;private&nbsp;var&nbsp;fms_obj:TextArea;<br/>&nbsp;&nbsp;public&nbsp;function&nbsp;Client(fms:TextArea){<br/>&nbsp;&nbsp;&nbsp;&nbsp;fms_obj=fms;<br/>&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;onBWCheck(...&nbsp;rest):Number&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;public&nbsp;function&nbsp;onBWDone(...&nbsp;rest):void&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(rest.length&gt;0)&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;currentBW=rest[0];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;currentBW=nc.client.sendInfo();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trace("你的带宽速度是：&nbsp;"+currentBW&nbsp;+"&nbsp;Kbps.");<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//FMS_Status.text+="你的带宽速度是：&nbsp;"+currentBW&nbsp;+"&nbsp;Kbps.\n"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trace("大约等于&nbsp;"+Math.round(currentBW/1000)+&nbsp;"&nbsp;Megabits每秒.");<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//FMS_Status.text+="大约等于&nbsp;"+Math.round(currentBW/1000)+&nbsp;"&nbsp;Megabits每秒.\n"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fms_obj.text+="当前连接该FMS带宽速度是:"+currentBW&nbsp;+"&nbsp;Kbps.\n";<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fms_obj.text+="大约等于&nbsp;"+Math.round(currentBW/1000)+&nbsp;"&nbsp;Megabits每秒.\n";<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trace(fms_obj.text);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;}<br/>}<br/></code></p><br/><b>Progressmanager.as，AS类文件，计算流长度和表象化：</b><br/><p class="code"><code>//动态显示Progresss进度<br/>package<br/>{<br/>&nbsp;&nbsp;import&nbsp;flash.events.TimerEvent;<br/>&nbsp;&nbsp;import&nbsp;flash.net.NetStream;<br/>&nbsp;&nbsp;import&nbsp;flash.utils.Timer;<br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;import&nbsp;mx.controls.ProgressBar;<br/>&nbsp;&nbsp;import&nbsp;mx.controls.Text;<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;public&nbsp;class&nbsp;Progressmanager<br/>&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;var&nbsp;_in_ns_obj:NetStream;<br/>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;var&nbsp;_buff_stats_obj:Text;<br/>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;var&nbsp;_play_status_str:String;<br/>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;var&nbsp;mytimer:Timer;<br/>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;var&nbsp;_buff_bar_obj:ProgressBar;<br/>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;var&nbsp;_progress_bar_obj:ProgressBar;<br/>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;var&nbsp;_video_duration_num:Number;<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;Progressmanager(ns:NetStream,ti:Text,bb:ProgressBar,vd:Number,pb:ProgressBar)<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mytimer=new&nbsp;Timer(100,0);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_in_ns_obj=ns;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_buff_stats_obj=ti;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//_play_status_str=ps;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_buff_bar_obj=bb;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_video_duration_num=vd;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_progress_bar_obj=pb;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mytimer.addEventListener(TimerEvent.TIMER,onTimer);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mytimer.start();<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;onTimer(te:TimerEvent):void{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//设定播放缓存<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;buffer:Number&nbsp;=&nbsp;Math.min(Math.round(_in_ns_obj.bufferLength/_in_ns_obj.bufferTime*100),&nbsp;100);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!isNaN(_in_ns_obj.bufferLength)){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_buff_stats_obj.text=&nbsp;"当前Cache:&nbsp;"+_in_ns_obj.bufferLength+"&nbsp;&nbsp;&nbsp;&nbsp;填充百分比:"+buffer+"%"+"&nbsp;&nbsp;&nbsp;&nbsp;实时FPS:&nbsp;"+Math.round(_in_ns_obj.currentFPS*100)/100;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_buff_bar_obj.setProgress(buffer,100);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//设定播放进度<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;preloadpercentage:Number=_in_ns_obj.time/_video_duration_num*100;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_progress_bar_obj.setProgress(preloadpercentage,100);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(buffer&nbsp;==&nbsp;0&nbsp;&&&nbsp;_in_ns_obj.currentFPS==0)&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mytimer.stop();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_progress_bar_obj.setProgress(0,100);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;setBufferStats(ps:String):void{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_play_status_str=ps;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mytimer.stop();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(_play_status_str=="stop"){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_progress_bar_obj.setProgress(0,100);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_buff_stats_obj.text="";<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;}<br/>}<br/></code></p><b>加入的Hi-ReS! Stas v.13代码，并做修改后的Stats.as，改了哪里，请自行查看</b><br/><p class="code"><code>/**<br/>&nbsp;*&nbsp;Hi-ReS!&nbsp;Stats&nbsp;v1.3<br/>&nbsp;*&nbsp;<br/>&nbsp;*&nbsp;Released&nbsp;under&nbsp;MIT&nbsp;license:<br/>&nbsp;*&nbsp;http://www.opensource.org/licenses/mit-license.php<br/>&nbsp;*&nbsp;&nbsp;<br/>&nbsp;*&nbsp;How&nbsp;to&nbsp;use:<br/>&nbsp;*&nbsp;<br/>&nbsp;*&nbsp;&nbsp;&nbsp;addChild(&nbsp;new&nbsp;Stats()&nbsp;);<br/>&nbsp;*&nbsp;<br/>&nbsp;*&nbsp;version&nbsp;log:<br/>&nbsp;*<br/>&nbsp;*&nbsp;&nbsp;08.07.12&nbsp;&nbsp;&nbsp;&nbsp;1.3&nbsp;&nbsp;&nbsp;&nbsp;Mr.doob&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;Some&nbsp;speed&nbsp;and&nbsp;code&nbsp;optimisations<br/>&nbsp;*&nbsp;&nbsp;08.02.15&nbsp;&nbsp;&nbsp;&nbsp;1.2&nbsp;&nbsp;&nbsp;&nbsp;Mr.doob&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;Class&nbsp;renamed&nbsp;to&nbsp;Stats&nbsp;(previously&nbsp;FPS)<br/>&nbsp;*&nbsp;&nbsp;08.01.05&nbsp;&nbsp;&nbsp;&nbsp;1.2&nbsp;&nbsp;&nbsp;&nbsp;Mr.doob&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;Click&nbsp;changes&nbsp;the&nbsp;fps&nbsp;of&nbsp;flash&nbsp;(half&nbsp;up&nbsp;increases,<br/>&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;half&nbsp;down&nbsp;decreases)<br/>&nbsp;*&nbsp;&nbsp;08.01.04&nbsp;&nbsp;&nbsp;&nbsp;1.1&nbsp;&nbsp;&nbsp;&nbsp;Mr.doob&nbsp;&&nbsp;Theo&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;Log&nbsp;shape&nbsp;for&nbsp;MEM<br/>&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;More&nbsp;room&nbsp;for&nbsp;MS<br/>&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;Shameless&nbsp;ripoff&nbsp;of&nbsp;Alternativa's&nbsp;FPS&nbsp;look&nbsp;;)<br/>&nbsp;*&nbsp;&nbsp;&nbsp;07.12.13&nbsp;&nbsp;&nbsp;&nbsp;1.0&nbsp;&nbsp;&nbsp;&nbsp;Mr.doob&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;First&nbsp;version<br/>&nbsp;**/<br/><br/>package&nbsp;net.hires.utils<br/>{<br/>&nbsp;&nbsp;import&nbsp;flash.display.Bitmap;<br/>&nbsp;&nbsp;import&nbsp;flash.display.BitmapData;<br/>&nbsp;&nbsp;import&nbsp;flash.events.Event;<br/>&nbsp;&nbsp;import&nbsp;flash.events.MouseEvent;<br/>&nbsp;&nbsp;import&nbsp;flash.geom.Rectangle;<br/>&nbsp;&nbsp;import&nbsp;flash.system.System;<br/>&nbsp;&nbsp;import&nbsp;flash.text.TextField;<br/>&nbsp;&nbsp;import&nbsp;flash.text.TextFormat;<br/>&nbsp;&nbsp;import&nbsp;flash.utils.getTimer;<br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;import&nbsp;mx.core.UIComponent;<br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;public&nbsp;class&nbsp;Stats&nbsp;extends&nbsp;UIComponent<br/>&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;var&nbsp;graph&nbsp;:&nbsp;BitmapData;<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;var&nbsp;fpsText&nbsp;:&nbsp;TextField,&nbsp;msText&nbsp;:&nbsp;TextField,&nbsp;memText&nbsp;:&nbsp;TextField,&nbsp;format&nbsp;:&nbsp;TextFormat;<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;var&nbsp;fps&nbsp;:int,&nbsp;timer&nbsp;:&nbsp;int,&nbsp;ms&nbsp;:&nbsp;int,&nbsp;msPrev&nbsp;&nbsp;:&nbsp;int&nbsp;=&nbsp;0;<br/>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;var&nbsp;mem&nbsp;:&nbsp;Number&nbsp;=&nbsp;0;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;Stats(&nbsp;):void<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;graph&nbsp;=&nbsp;new&nbsp;BitmapData(&nbsp;60,&nbsp;35,&nbsp;false,&nbsp;0x000000&nbsp;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;gBitmap:Bitmap&nbsp;=&nbsp;new&nbsp;Bitmap(&nbsp;graph&nbsp;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gBitmap.x=&nbsp;60;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gBitmap.y&nbsp;=&nbsp;0;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gBitmap.alpha<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addChild(gBitmap);<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;format&nbsp;=&nbsp;new&nbsp;TextFormat(&nbsp;"_sans",&nbsp;9&nbsp;);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fpsText&nbsp;=&nbsp;new&nbsp;TextField();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msText&nbsp;=&nbsp;new&nbsp;TextField();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memText&nbsp;=&nbsp;new&nbsp;TextField();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fpsText.defaultTextFormat&nbsp;=&nbsp;msText.defaultTextFormat&nbsp;=&nbsp;memText.defaultTextFormat&nbsp;=&nbsp;format;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fpsText.width&nbsp;=&nbsp;msText.width&nbsp;=&nbsp;memText.width&nbsp;=&nbsp;60;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fpsText.selectable&nbsp;=&nbsp;msText.selectable&nbsp;=&nbsp;memText.selectable&nbsp;=&nbsp;false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fpsText.textColor&nbsp;=&nbsp;0xFFFF00;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fpsText.text&nbsp;=&nbsp;"fps:&nbsp;";<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addChild(fpsText);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msText.y&nbsp;=&nbsp;10;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msText.textColor&nbsp;=&nbsp;0x00FF00;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msText.text&nbsp;=&nbsp;"ms:&nbsp;";<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addChild(msText);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memText.y&nbsp;=&nbsp;20;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memText.textColor&nbsp;=&nbsp;0x00FFFF;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memText.text&nbsp;=&nbsp;"mem:&nbsp;";<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addChild(memText);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addEventListener(MouseEvent.CLICK,&nbsp;mouseHandler);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addEventListener(Event.ENTER_FRAME,&nbsp;update);<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;mouseHandler(&nbsp;e:MouseEvent&nbsp;):void<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(this.mouseY&nbsp;&gt;&nbsp;this.height&nbsp;*&nbsp;.35)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stage.frameRate&nbsp;--;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stage.frameRate&nbsp;++;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fpsText.text&nbsp;=&nbsp;"fps:&nbsp;"&nbsp;+&nbsp;fps&nbsp;+&nbsp;"&nbsp;/&nbsp;"&nbsp;+&nbsp;stage.frameRate;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;update(&nbsp;e:Event&nbsp;):void<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timer&nbsp;=&nbsp;getTimer();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fps++;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;timer&nbsp;-&nbsp;1000&nbsp;&gt;&nbsp;msPrev&nbsp;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msPrev&nbsp;=&nbsp;timer;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mem&nbsp;=&nbsp;Number(&nbsp;(&nbsp;System.totalMemory&nbsp;/&nbsp;1048576&nbsp;).toFixed(3)&nbsp;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;fpsGraph&nbsp;:&nbsp;int&nbsp;=&nbsp;Math.min(&nbsp;50,&nbsp;50&nbsp;/&nbsp;stage.frameRate&nbsp;*&nbsp;fps&nbsp;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;memGraph:Number&nbsp;=&nbsp;&nbsp;Math.min(&nbsp;50,&nbsp;Math.sqrt(&nbsp;Math.sqrt(&nbsp;mem&nbsp;*&nbsp;5000&nbsp;)&nbsp;)&nbsp;)&nbsp;-&nbsp;2;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;graph.scroll(&nbsp;1,&nbsp;0&nbsp;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;graph.fillRect(&nbsp;new&nbsp;Rectangle(&nbsp;0,&nbsp;0,&nbsp;1,&nbsp;graph.height&nbsp;),&nbsp;0x000000&nbsp;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;graph.setPixel(&nbsp;0,&nbsp;graph.height&nbsp;-&nbsp;fpsGraph,&nbsp;0xFFFF00);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;graph.setPixel(&nbsp;0,&nbsp;graph.height&nbsp;-&nbsp;(&nbsp;(&nbsp;timer&nbsp;-&nbsp;ms&nbsp;)&nbsp;&gt;&gt;&nbsp;1&nbsp;),&nbsp;0x00FF00&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;graph.setPixel(&nbsp;0,&nbsp;graph.height&nbsp;-&nbsp;memGraph,&nbsp;0x00FFFF);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fpsText.text&nbsp;=&nbsp;"fps:&nbsp;"&nbsp;+&nbsp;fps&nbsp;+&nbsp;"&nbsp;/&nbsp;"&nbsp;+&nbsp;stage.frameRate;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memText.text&nbsp;=&nbsp;"mem:&nbsp;"&nbsp;+&nbsp;mem;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fps&nbsp;=&nbsp;0;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msText.text&nbsp;=&nbsp;"ms:&nbsp;"&nbsp;+&nbsp;(timer&nbsp;-&nbsp;ms);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ms&nbsp;=&nbsp;timer;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;}<br/>}<br/></code></p><b>没有进一步图形化的系统检测部分OsDetection.as, AS Class类型，有兴趣请自行增强此部分功能吧：</b><br/><p class="code"><code>package&nbsp;com.zerlot.utils<br/>{<br/>&nbsp;&nbsp;import&nbsp;flash.system.Capabilities;<br/>&nbsp;&nbsp;public&nbsp;class&nbsp;OsDetection<br/>&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;OsDetection()<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;showCapabilites();<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;showCapabilites():void{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trace("对用户的摄像头和麦克风的访问是已经通过管理方式禁止:"&nbsp;+&nbsp;Capabilities.avHardwareDisable);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trace("系统是否支持与辅助功能通信:&nbsp;"&nbsp;+&nbsp;Capabilities.hasAccessibility);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trace("系统是否有音频功能:&nbsp;"&nbsp;+&nbsp;Capabilities.hasAudio);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trace("系统是否可以对音频流进行编码:&nbsp;"&nbsp;+&nbsp;Capabilities.hasAudioEncoder);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trace("系统是否支持嵌入的视频:&nbsp;"&nbsp;+&nbsp;Capabilities.hasEmbeddedVideo);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trace("系统是否具有&nbsp;MP3&nbsp;解码器:&nbsp;"&nbsp;+&nbsp;Capabilities.hasMP3);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trace("系统是否支持打印:&nbsp;"&nbsp;+&nbsp;Capabilities.hasPrinting);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trace("系统是否支持开发通过&nbsp;Flash&nbsp;Media&nbsp;Server&nbsp;运行的屏幕广播应用程序:&nbsp;"&nbsp;+&nbsp;Capabilities.hasScreenBroadcast);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trace("系统是否支持回放通过&nbsp;Flash&nbsp;Media&nbsp;Server&nbsp;运行的屏幕广播应用程序:&nbsp;"&nbsp;+&nbsp;Capabilities.hasScreenPlayback);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trace("系统是否可以播放音频流:&nbsp;"&nbsp;+&nbsp;Capabilities.hasStreamingAudio);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trace("系统是否可以对视频流例如来自&nbsp;Web&nbsp;摄像头的视频流进行编码:&nbsp;"&nbsp;+&nbsp;Capabilities.hasVideoEncoder);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trace("系统是特殊的Flash&nbsp;Player调试版本:&nbsp;"&nbsp;+&nbsp;Capabilities.isDebugger);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trace("行内容的系统的语言代码:&nbsp;"&nbsp;+&nbsp;Capabilities.language);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trace("对用户硬盘的读取权限是已经通过管理方式禁止:&nbsp;"&nbsp;+&nbsp;Capabilities.localFileReadDisable);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trace("指定&nbsp;Flash&nbsp;Player&nbsp;的运行版本或&nbsp;AIR&nbsp;运行时的制造商:&nbsp;"&nbsp;+&nbsp;Capabilities.manufacturer);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trace("当前的操作系统:&nbsp;"&nbsp;+&nbsp;Capabilities.os);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trace("屏幕的像素高宽比:&nbsp;"&nbsp;+&nbsp;Capabilities.pixelAspectRatio);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trace("运行时环境的类型:&nbsp;"&nbsp;+&nbsp;Capabilities.playerType);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trace("屏幕的每英寸点数dpi分辨率:&nbsp;"&nbsp;+&nbsp;Capabilities.screenDPI);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trace("屏幕的最大水平分辨率:&nbsp;"&nbsp;+&nbsp;Capabilities.screenResolutionX);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trace("屏幕的最大垂直分辨率:&nbsp;"&nbsp;+&nbsp;Capabilities.screenResolutionY);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trace("Flash&nbsp;Player&nbsp;或&nbsp;Adobe®&nbsp;AIR&nbsp;平台和版本信息:&nbsp;"&nbsp;+&nbsp;Capabilities.version);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;}<br/>}<br/></code></p><b>AIR1.5配置文件fms7yue-app.xml：</b><br/><p class="code"><code>&lt;?xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"?&gt;<br/>&lt;application&nbsp;xmlns="http://ns.adobe.com/air/application/1.5"&gt;<br/><br/>&nbsp;&nbsp;&lt;!--&nbsp;The&nbsp;application&nbsp;identifier&nbsp;string,&nbsp;unique&nbsp;to&nbsp;this&nbsp;application.&nbsp;Required.&nbsp;--&gt;<br/>&nbsp;&nbsp;&lt;id&gt;fms7yue&lt;/id&gt;<br/><br/>&nbsp;&nbsp;&lt;!--&nbsp;Used&nbsp;as&nbsp;the&nbsp;filename&nbsp;for&nbsp;the&nbsp;application.&nbsp;Required.&nbsp;--&gt;<br/>&nbsp;&nbsp;&lt;filename&gt;fms7yue&lt;/filename&gt;<br/><br/>&nbsp;&nbsp;&lt;!--&nbsp;The&nbsp;name&nbsp;that&nbsp;is&nbsp;displayed&nbsp;in&nbsp;the&nbsp;AIR&nbsp;application&nbsp;installer.&nbsp;Optional.&nbsp;--&gt;<br/>&nbsp;&nbsp;&lt;name&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;text&nbsp;xml:lang="zh_CN"&gt;Flash流媒体工具&lt;/text&gt;<br/>&nbsp;&nbsp;&lt;/name&gt;<br/><br/>&nbsp;&nbsp;&lt;!--&nbsp;An&nbsp;application&nbsp;version&nbsp;designator&nbsp;(such&nbsp;as&nbsp;"v1",&nbsp;"2.5",&nbsp;or&nbsp;"Alpha&nbsp;1").&nbsp;Required.&nbsp;--&gt;<br/>&nbsp;&nbsp;&lt;version&gt;v1.1&nbsp;r03&lt;/version&gt;<br/><br/>&nbsp;&nbsp;&lt;!--&nbsp;Description,&nbsp;displayed&nbsp;in&nbsp;the&nbsp;AIR&nbsp;application&nbsp;installer.&nbsp;Optional.&nbsp;--&gt;<br/>&nbsp;&nbsp;&lt;description&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;text&nbsp;xml:lang="zh_CN"&gt;Flash&nbsp;Streaming&nbsp;Tool&nbsp;v1.1&nbsp;r03支持Http/RTMP方式流媒体播放及相关检测的工具。安装后请参考安装路径下的README文件&lt;/text&gt;<br/>&nbsp;&nbsp;&lt;/description&gt;<br/><br/>&nbsp;&nbsp;&lt;!--&nbsp;Copyright&nbsp;information.&nbsp;Optional&nbsp;--&gt;<br/>&nbsp;&nbsp;&lt;copyright&gt;©2008&nbsp;www.7yue.com&lt;/copyright&gt;<br/><br/>&nbsp;&nbsp;&lt;!--&nbsp;Settings&nbsp;for&nbsp;the&nbsp;application's&nbsp;initial&nbsp;window.&nbsp;Required.&nbsp;--&gt;<br/>&nbsp;&nbsp;&lt;initialWindow&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;The&nbsp;main&nbsp;SWF&nbsp;or&nbsp;HTML&nbsp;file&nbsp;of&nbsp;the&nbsp;application.&nbsp;Required.&nbsp;--&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;Note:&nbsp;In&nbsp;Flex&nbsp;Builder,&nbsp;the&nbsp;SWF&nbsp;reference&nbsp;is&nbsp;set&nbsp;automatically.&nbsp;--&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;content&gt;fms7yue.swf&lt;/content&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;The&nbsp;title&nbsp;of&nbsp;the&nbsp;main&nbsp;window.&nbsp;Optional.&nbsp;--&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;Flash&nbsp;Streaming&nbsp;Tool&nbsp;1.1&nbsp;r03&lt;/title&gt;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;The&nbsp;type&nbsp;of&nbsp;system&nbsp;chrome&nbsp;to&nbsp;use&nbsp;(either&nbsp;"standard"&nbsp;or&nbsp;"none").&nbsp;Optional.&nbsp;Default&nbsp;standard.&nbsp;--&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;systemChrome&gt;none&lt;/systemChrome&gt;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;Whether&nbsp;the&nbsp;window&nbsp;is&nbsp;transparent.&nbsp;Only&nbsp;applicable&nbsp;when&nbsp;systemChrome&nbsp;is&nbsp;false.&nbsp;Optional.&nbsp;Default&nbsp;false.&nbsp;--&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;transparent&gt;true&lt;/transparent&gt;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;Whether&nbsp;the&nbsp;window&nbsp;is&nbsp;initially&nbsp;visible.&nbsp;Optional.&nbsp;Default&nbsp;false.&nbsp;--&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;visible&gt;true&lt;/visible&gt;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;Whether&nbsp;the&nbsp;user&nbsp;can&nbsp;minimize&nbsp;the&nbsp;window.&nbsp;Optional.&nbsp;Default&nbsp;true.&nbsp;--&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;minimizable&gt;true&lt;/minimizable&gt;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;Whether&nbsp;the&nbsp;user&nbsp;can&nbsp;maximize&nbsp;the&nbsp;window.&nbsp;Optional.&nbsp;Default&nbsp;true.&nbsp;--&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;maximizable&gt;false&lt;/maximizable&gt;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;Whether&nbsp;the&nbsp;user&nbsp;can&nbsp;resize&nbsp;the&nbsp;window.&nbsp;Optional.&nbsp;Default&nbsp;true.&nbsp;--&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;resizable&gt;false&lt;/resizable&gt;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;The&nbsp;window's&nbsp;initial&nbsp;width.&nbsp;Optional.&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;width&gt;&lt;/width&gt;--&gt;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;The&nbsp;window's&nbsp;initial&nbsp;height.&nbsp;Optional.&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;height&gt;&lt;/height&gt;--&gt;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;The&nbsp;window's&nbsp;initial&nbsp;x&nbsp;position.&nbsp;Optional.&nbsp;--&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;&lt;x&gt;&lt;/x&gt;&nbsp;--&gt;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;The&nbsp;window's&nbsp;initial&nbsp;y&nbsp;position.&nbsp;Optional.&nbsp;--&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;&lt;y&gt;&lt;/y&gt;&nbsp;--&gt;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;The&nbsp;window's&nbsp;minimum&nbsp;size,&nbsp;specified&nbsp;as&nbsp;a&nbsp;width/height&nbsp;pair,&nbsp;such&nbsp;as&nbsp;"400&nbsp;200".&nbsp;Optional.&nbsp;--&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;&lt;minSize&gt;&lt;/minSize&gt;&nbsp;--&gt;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;The&nbsp;window's&nbsp;initial&nbsp;maximum&nbsp;size,&nbsp;specified&nbsp;as&nbsp;a&nbsp;width/height&nbsp;pair,&nbsp;such&nbsp;as&nbsp;"1600&nbsp;1200".&nbsp;Optional.&nbsp;--&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;&lt;maxSize&gt;&lt;/maxSize&gt;&nbsp;--&gt;<br/>&nbsp;&nbsp;&lt;/initialWindow&gt;<br/><br/>&nbsp;&nbsp;&lt;!--&nbsp;The&nbsp;subpath&nbsp;of&nbsp;the&nbsp;standard&nbsp;default&nbsp;installation&nbsp;location&nbsp;to&nbsp;use.&nbsp;Optional.&nbsp;--&gt;<br/>&nbsp;&nbsp;&lt;!--&nbsp;&lt;installFolder&gt;&lt;/installFolder&gt;&nbsp;--&gt;<br/><br/>&nbsp;&nbsp;&lt;!--&nbsp;The&nbsp;subpath&nbsp;of&nbsp;the&nbsp;Windows&nbsp;Start/Programs&nbsp;menu&nbsp;to&nbsp;use.&nbsp;Optional.&nbsp;--&gt;<br/>&nbsp;&nbsp;&lt;!--&nbsp;&lt;programMenuFolder&gt;&lt;/programMenuFolder&gt;&nbsp;--&gt;<br/><br/>&nbsp;&nbsp;&lt;!--&nbsp;The&nbsp;icon&nbsp;the&nbsp;system&nbsp;uses&nbsp;for&nbsp;the&nbsp;application.&nbsp;For&nbsp;at&nbsp;least&nbsp;one&nbsp;resolution,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;specify&nbsp;the&nbsp;path&nbsp;to&nbsp;a&nbsp;PNG&nbsp;file&nbsp;included&nbsp;in&nbsp;the&nbsp;AIR&nbsp;package.&nbsp;Optional.&nbsp;--&gt;<br/>&nbsp;&nbsp;&lt;icon&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;image16x16&gt;assets/icon_016.png&lt;/image16x16&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;image32x32&gt;assets/icon_032.png&lt;/image32x32&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;image48x48&gt;assets/icon_048.png&lt;/image48x48&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;image128x128&gt;assets/icon_128.png&lt;/image128x128&gt;<br/>&nbsp;&nbsp;&lt;/icon&gt;<br/><br/>&nbsp;&nbsp;&lt;!--&nbsp;Whether&nbsp;the&nbsp;application&nbsp;handles&nbsp;the&nbsp;update&nbsp;when&nbsp;a&nbsp;user&nbsp;double-clicks&nbsp;an&nbsp;update&nbsp;version<br/>&nbsp;&nbsp;of&nbsp;the&nbsp;AIR&nbsp;file&nbsp;(true),&nbsp;or&nbsp;the&nbsp;default&nbsp;AIR&nbsp;application&nbsp;installer&nbsp;handles&nbsp;the&nbsp;update&nbsp;(false).<br/>&nbsp;&nbsp;Optional.&nbsp;Default&nbsp;false.&nbsp;--&gt;<br/>&nbsp;&nbsp;&lt;!--&nbsp;&lt;customUpdateUI&gt;&lt;/customUpdateUI&gt;&nbsp;--&gt;<br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;&lt;!--&nbsp;Whether&nbsp;the&nbsp;application&nbsp;can&nbsp;be&nbsp;launched&nbsp;when&nbsp;the&nbsp;user&nbsp;clicks&nbsp;a&nbsp;link&nbsp;in&nbsp;a&nbsp;web&nbsp;browser.<br/>&nbsp;&nbsp;Optional.&nbsp;Default&nbsp;false.&nbsp;--&gt;<br/>&nbsp;&nbsp;&lt;!--&nbsp;&lt;allowBrowserInvocation&gt;&lt;/allowBrowserInvocation&gt;&nbsp;--&gt;<br/><br/>&nbsp;&nbsp;&lt;!--&nbsp;Listing&nbsp;of&nbsp;file&nbsp;types&nbsp;for&nbsp;which&nbsp;the&nbsp;application&nbsp;can&nbsp;register.&nbsp;Optional.&nbsp;--&gt;<br/>&nbsp;&nbsp;&lt;!--&nbsp;&lt;fileTypes&gt;&nbsp;--&gt;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;Defines&nbsp;one&nbsp;file&nbsp;type.&nbsp;Optional.&nbsp;--&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;&lt;fileType&gt;&nbsp;--&gt;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;The&nbsp;name&nbsp;that&nbsp;the&nbsp;system&nbsp;displays&nbsp;for&nbsp;the&nbsp;registered&nbsp;file&nbsp;type.&nbsp;Required.&nbsp;--&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;&lt;name&gt;&lt;/name&gt;&nbsp;--&gt;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;The&nbsp;extension&nbsp;to&nbsp;register.&nbsp;Required.&nbsp;--&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;&lt;extension&gt;&lt;/extension&gt;&nbsp;--&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;The&nbsp;description&nbsp;of&nbsp;the&nbsp;file&nbsp;type.&nbsp;Optional.&nbsp;--&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;&lt;description&gt;&lt;/description&gt;&nbsp;--&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;The&nbsp;MIME&nbsp;type.&nbsp;Optional.&nbsp;--&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;&lt;contentType&gt;&lt;/contentType&gt;&nbsp;--&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;The&nbsp;icon&nbsp;to&nbsp;display&nbsp;for&nbsp;the&nbsp;file&nbsp;type.&nbsp;Optional.&nbsp;--&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;&lt;icon&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;image16x16&gt;&lt;/image16x16&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;image32x32&gt;&lt;/image32x32&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;image48x48&gt;&lt;/image48x48&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;image128x128&gt;&lt;/image128x128&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/icon&gt;&nbsp;--&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;&lt;/fileType&gt;&nbsp;--&gt;<br/>&nbsp;&nbsp;&lt;!--&nbsp;&lt;/fileTypes&gt;&nbsp;--&gt;<br/><br/>&lt;/application&gt;<br/></code></p>程序很小，功能有限，如果使用的朋友没有找到你们想要的功能，还望见谅。]]></description><category>Action Script</category><comments>http://www.7yue.com/post/225.html#comment</comments><wfw:comment>http://www.7yue.com/</wfw:comment><wfw:commentRss>http://www.7yue.com/feed.asp?cmt=225</wfw:commentRss><trackback:ping>http://www.7yue.com/cmd.asp?act=tb&amp;id=225&amp;key=8df80538</trackback:ping></item></channel></rss>
