<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">

    <channel>
    <title>云开之RIA开发-5D Blog V2.0</title>
    <link>http://blog.5d.cn/vip/yunkai/</link>
    <Description>我的Blog,5dblog.com</Description>
    <language>zh-cn</language>
    <copyright>Powered by 5DBlog | (C)Copyright by 5DM.COM, 2003-2006</copyright>
    <webMaster>webmaster@5d.cn</webMaster>
    <image>
	    <title>云开之RIA开发-5D Blog V2.0</title> 
	    <url>http://www.5d.cn/images/logo.gif</url> 
	    <link>http://blog.5d.cn/vip/yunkai/</link> 
	    <description>我的Blog,5dblog.com</description> 
    </image>
	<taglink>http://blog.5d.cn/tag.aspx?tagname=</taglink>
<item><link>http://blog.5d.cn/vip/yunkai/200706/412799.html</link><title><![CDATA[AS3 倒影算法]]></title><author>yunkai</author><category>AS3</category><pubDate>2007-6-21 15:18:00</pubDate><guid>http://blog.5d.cn/vip/yunkai/200706/412799.html</guid><description><![CDATA[<p>由于在RIA开发中需要对有水的地图场景做一些特效处理比如说倒影，如下图的效果：</p>
<p>至于RIA：请访问 <a href="http://q.uen.cn/ria/ria.html">q.uen.cn/ria/ria.html</a></p>
<p> <img width="80" height="80" alt="" src="/vip/yunkai/upload/2007-06/s_2007621234470.png" /><br />
因此，分享一下倒影算法的心得，首先观察倒影的特点如下<br />
1，是上下反转的图像<br />
2，从上到下透明度越来越大<br />
那么我来完成这2步操作：<br />
<br />
function createRef(p_source:DisplayObject):void{<br />
&nbsp;&nbsp; //对源显示对象做上下反转处理<br />
&nbsp;&nbsp;&nbsp; var bd:BitmapData=new BitmapData(p_source.width,p_source.height,true,0);<br />
&nbsp;&nbsp;&nbsp; var mtx:Matrix=new Matrix();<br />
&nbsp;&nbsp;&nbsp; mtx.d=-1;mtx.ty=bd.height;<br />
&nbsp;&nbsp;&nbsp; bd.draw(p_source,mtx);<br />
//生成一个渐变遮罩<br />
&nbsp;&nbsp;&nbsp; var width:int=bd.width;<br />
&nbsp;&nbsp;&nbsp; var height:int=bd.height;<br />
&nbsp;&nbsp;&nbsp; mtx=new Matrix();<br />
&nbsp;&nbsp;&nbsp; mtx.createGradientBox(width,height,0.5 * Math.PI);<br />
&nbsp;&nbsp;&nbsp; var shape:Shape = new Shape();<br />
&nbsp;&nbsp;&nbsp; shape.graphics.beginGradientFill(GradientType.LINEAR,[0,0],[0.9,0.2],[0,0xFF],mtx)<br />
&nbsp;&nbsp;&nbsp; shape.graphics.drawRect(0,0,width,height);<br />
&nbsp;&nbsp;&nbsp; shape.graphics.endFill();<br />
&nbsp;&nbsp;&nbsp; var mask_bd:BitmapData=new BitmapData(width,height,true,0);<br />
&nbsp;&nbsp;&nbsp; mask_bd.draw(shape);<br />
//生成最终效果<br />
&nbsp;&nbsp;&nbsp; bd.copyPixels(bd,bd.rect,new Point(0,0),mask_bd,new Point(0,0),false);<br />
//将倒影位图放在源显示对象下面<br />
&nbsp;&nbsp;&nbsp; var ref:Bitmap=new Bitmap();<br />
&nbsp;&nbsp;&nbsp; ref.y=p_source.height;<br />
&nbsp;&nbsp;&nbsp; ref.bitmapData=bd;<br />
&nbsp;&nbsp;&nbsp; p_source.parent.addChild(ref);<br />
}<br />
源显示对象如图<br />
<img width="550" height="203" alt="" src="/vip/yunkai/upload/2007-06/20076212258410.jpg" /><br />
生成的倒影效果</p>
<p></p>
<embed width="550" height="400" src="/vip/yunkai/upload/2007-06/20076212258411.swf" scale="showall" play="true" loop="true" menu="true" wmode="Window" quality="1" type="application/x-shockwave-flash"></embed><br />
<p></p>
<p>如看不到SWF，请看下面截图</p>
<p><img width="563" height="458" alt="" src="/vip/yunkai/upload/2007-06/20076212316150.png" /></p>
<p></p>
<p>当然你也可以加入一些水波效果以达到更COOL的效果</p>]]></description><tag><![CDATA[]]></tag></item><item><link>http://blog.5d.cn/vip/yunkai/200605/256187.html</link><title><![CDATA[mapEditor 060512发布]]></title><author>yunkai</author><category>DIY</category><pubDate>2006-5-12 5:39:00</pubDate><guid>http://blog.5d.cn/vip/yunkai/200605/256187.html</guid><description><![CDATA[<A HREF="http://220.194.60.121/demo/mapEditor.html" TARGET=_blank>220.194.60.121/demo/mapEditor.html</A>
改用BitmapData显示瓷砖!]]></description><tag><![CDATA[]]></tag></item><item><link>http://blog.5d.cn/vip/yunkai/200510/176711.html</link><title><![CDATA[Diy My Media V1028版发布]]></title><author>yunkai</author><category>DIY</category><pubDate>2005-10-28 7:24:00</pubDate><guid>http://blog.5d.cn/vip/yunkai/200510/176711.html</guid><description><![CDATA[<A HREF="http://211.100.17.140/fcs/diy/check.html" TARGET=_blank>211.100.17.140/fcs/diy/check.html</A><br>1028版:<br>1、增加了预览素材的时间与进度显示。<br>2、增加了项目预览。<br>3、修正了三处BUG。<br>注意：当你拖好素材到时间轴后，将预览窗口中的项目点亮才可以预览整个时间轴，否则只预览素材。<br>如果你发现新的BUG欢迎提交给我！<br>1031版：<br>将增加录音功能，独立的播放器！]]></description><tag><![CDATA[]]></tag></item><item><link>http://blog.5d.cn/vip/yunkai/200510/176367.html</link><title><![CDATA[Diy My Media　系统预览!]]></title><author>yunkai</author><category>工作日记</category><pubDate>2005-10-27 7:01:00</pubDate><guid>http://blog.5d.cn/vip/yunkai/200510/176367.html</guid><description><![CDATA[<A HREF="http://211.100.17.140/fcs/diy/check.html" TARGET=_blank>211.100.17.140/fcs/diy/check.html</A><br>FLASH版的强大媒体编辑器<br>10.27版简介<br>1、可以将素材库扔到时间轴上<br>第一轨为视频轨，可以放置视频与图像，会自动对齐的<br>第二轨为叠加轨，也可以放置视频与图像，但是会叠加在第一轨上<br>第三轨为标题轨，也就是放标题了（此功能需在后期的版本中实现）<br>第四轨为音效轨，可以放音效了，与第五轨的音乐是混合的<br>第五轨为音乐轨，可以放背景音乐。<br>2、可以为第一轨加入转场效果（只能是第一轨）<br>后期版本会随时发布，有兴趣的可以关注！]]></description><tag><![CDATA[]]></tag></item><item><link>http://blog.5d.cn/vip/yunkai/200508/143814.html</link><title><![CDATA[ASDT所写的AS类在FLASH编译不能通过的完美解决方案]]></title><author>yunkai</author><category>FAME</category><pubDate>2005-8-19 14:13:00</pubDate><guid>http://blog.5d.cn/vip/yunkai/200508/143814.html</guid><description><![CDATA[此现象形成的原因是因为编码的问题，需要将Eclipse中的AS文件编码设置为GBK可以解决这个问题。<br>操作方法<br>在Eclipse中点菜单Windos-&gt;Preferences<br>选中树型菜单中的<br>General+Content Types<br>选择Text下的ASContentType<br>在Default encoding的选项中输入GBK，点Update，点OK键<br>就大功告成了!<br>相信所有使用ASDT做开发的AS Coder有福了!!!<br>(本文谢绝转载)]]></description><tag><![CDATA[]]></tag></item><item><link>http://blog.5d.cn/vip/yunkai/200508/143628.html</link><title><![CDATA[ASDT使用技巧一[自动生成GET与SET]]]></title><author>yunkai</author><category>FAME</category><pubDate>2005-8-19 7:16:00</pubDate><guid>http://blog.5d.cn/vip/yunkai/200508/143628.html</guid><description><![CDATA[例如类中有私有属性<br><br>private var type:Stirng<br><br>在ASDT中按Ctrl+Shift+g<br><br>可以自动生成<br><br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->/**<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--> *@return type<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--> */<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->public function getType():String {<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->return type;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->}<br><br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->/**<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--> *@param type<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--> */<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->public function setType(type:String):Void {<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->this.type = type;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->}<br><br>]]></description><tag><![CDATA[]]></tag></item><item><link>http://blog.5d.cn/vip/yunkai/200508/143210.html</link><title><![CDATA[ECLIPSE+ADST+ANT]]></title><author>yunkai</author><category>AS3</category><pubDate>2005-8-18 12:44:00</pubDate><guid>http://blog.5d.cn/vip/yunkai/200508/143210.html</guid><description><![CDATA[正常是Flashout来编译输出，虽然对于初学者非常好用，但是对于复杂的工程远不如ANT，下面重点介绍一下build.xml<br>&lt;project default=&quot;compile&quot; basedir=&quot;.&quot;&gt;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->&lt;property name=&quot;mtasc&quot; location=&quot;j:/java/mtasc/mtasc.exe&quot;/&gt;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->&lt;property name=&quot;deploy&quot; location=&quot;.&quot;/&gt;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->&lt;property name=&quot;targetswf&quot; &#118alue=&quot;demo1.swf&quot;/&gt;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->&lt;property name=&quot;outswf&quot; &#118alue=&quot;out.swf&quot;/&gt;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->&lt;property name=&quot;flashplayer&quot; &#118alue=&quot;c:/Program Files/Macromedia/Flash 8/Players/SAFlashPlayer.exe&quot;/&gt;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->&lt;target name=&quot;compile&quot;&gt;<!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->&lt;exec executable=&quot;${mtasc}&quot; fail&#111nerror=&quot;true&quot;&gt;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->&lt;arg &#118alue=&quot;-cp&quot;/&gt;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->&lt;arg &#118alue=&quot;j:/work/java/aslib/src/&quot;/&gt;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->&lt;arg &#118alue=&quot;-main&quot;/&gt;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->&lt;arg &#118alue=&quot;j:/work/java/aslib/src/app/fmusic/Recorder.as&quot;/&gt;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->&lt;arg &#118alue=&quot;-swf&quot;/&gt;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->&lt;arg &#118alue=&quot;${deploy}/${targetswf}&quot;/&gt;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->&lt;arg &#118alue=&quot;-out&quot;/&gt;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->&lt;arg &#118alue=&quot;${deploy}/${outswf}&quot;/&gt;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->&lt;/exec&gt;<!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->&lt;exec executable=&quot;${flashplayer}&quot; spawn=&quot;true&quot;&gt;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->&lt;arg &#118alue=&quot;${deploy}/${outswf}&quot;/&gt;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->&lt;/exec&gt;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->&lt;/target&gt;<br>&lt;/project&gt;<br>仅供使用FAME的开发者参考，编译完后会使用FLASHPLAYER播放器打开，里面的参数请自行修改!]]></description><tag><![CDATA[]]></tag></item><item><link>http://blog.5d.cn/vip/yunkai/200504/69348.html</link><title><![CDATA[FLASH　45度引擎开发手记（三）]]></title><author>yunkai</author><category>工作日记</category><pubDate>2005-4-5 9:00:00</pubDate><guid>http://blog.5d.cn/vip/yunkai/200504/69348.html</guid><description><![CDATA[1、修正原来不正确的深度排序算法，改由画家算法实现。<br>2、修正滑步的问题。<br>DEMO：<br><A HREF="http://202.99.16.52/tile/t0405.html" TARGET=_blank>202.99.16.52/tile/t0405.html</A>]]></description><tag><![CDATA[]]></tag></item><item><link>http://blog.5d.cn/vip/yunkai/200504/67721.html</link><title><![CDATA[FLASH　45度引擎开发手记（二）]]></title><author>yunkai</author><category>AS2 Editor</category><pubDate>2005-4-1 6:05:00</pubDate><guid>http://blog.5d.cn/vip/yunkai/200504/67721.html</guid><description><![CDATA[楼梯测试版本2<br>修正了BUG与优化算法，见<br><A HREF="http://202.99.16.52/tile/tile9.html" TARGET=_blank>202.99.16.52/tile/tile9.html</A><br>有兴趣参与开发的请与我联系！]]></description><tag><![CDATA[]]></tag></item><item><link>http://blog.5d.cn/vip/yunkai/200503/67297.html</link><title><![CDATA[FLASH　45度引擎开发手记（一）]]></title><author>yunkai</author><category>工作日记</category><pubDate>2005-3-31 1:08:00</pubDate><guid>http://blog.5d.cn/vip/yunkai/200503/67297.html</guid><description><![CDATA[经过近两周的紧张开发终于有所收获<br>一，深度计算问题：<br>　　也就是遮挡问题，常见的计算公式有mapY*mapWidth+mayX,这个对于切割大物体有效，深度计算不会有太大的问题，但是如果我在场景中有个2＊2的喷泉动画，如果采用切割法的话，美工的工作量可想而知，最后我采用了z,y,x排序的3D算法，终于可以正确处理深度。<br>二、寻路算法：<br>　　目前暂时采用的是A＊算法，后期会考虑使用即时寻路算法（就是障碍表是动态的），支持是否8方向走动，是否不穿越夹空。<br>三、上下楼梯的问题<br>　　这个需要动脑了，主要是步进器的设计。<br>以上DEMO一、二点可以看<br><A HREF="http://202.99.16.52/tile/tile7.html" TARGET=_blank>202.99.16.52/tile/tile7.html</A><br>第三点的DEMO见<br><A HREF="http://202.99.16.52/tile/tile8.html" TARGET=_blank>202.99.16.52/tile/tile8.html</A><br>目前还在更新程序与修正BUG。<br>下期需要DEMO的有<br>坐椅子<br>游泳室<br><br><br>]]></description><tag><![CDATA[]]></tag></item><item><link>http://blog.5d.cn/vip/yunkai/200502/50182.html</link><title><![CDATA[强烈推荐看看－PETER的FLASH虚拟社区DEMO！]]></title><author>yunkai</author><category>AS2 Editor</category><pubDate>2005-2-4 1:16:00</pubDate><guid>http://blog.5d.cn/vip/yunkai/200502/50182.html</guid><description><![CDATA[详见URL<br><A HREF="http://www.mocre.com:8080/fsj/flash" TARGET=_blank>www.mocre.com:8080/fsj/flash</A>/<br>个人点评：<br>1、这个FLASH虚拟社区不仅仅是人物走来走去，而是PETER融合了更多的内涵在里面，目前有好友、留言、视频音频的交互、头像、上传等等常用的功能。<br>2、指明了一个未来的发展趋势，做为一个大的平台系统来结合各种优质的服务。<br>3、问题是FLASH的性能解决，我想这个会很快不会成为障碍的！]]></description><tag><![CDATA[]]></tag></item><item><link>http://blog.5d.cn/vip/yunkai/200412/42392.html</link><title><![CDATA[云开之圣诞金条(图)]]></title><author>yunkai</author><category>个人简介</category><pubDate>2004-12-26 14:49:00</pubDate><guid>http://blog.5d.cn/vip/yunkai/200412/42392.html</guid><description><![CDATA[<br>图片如下：<br><IMG src="upload/2004-12/26_755.jpg" border=0 onload="fitSize(this)"><br>好友相送，留个记念，哈哈!!!]]></description><tag><![CDATA[]]></tag></item><item><link>http://blog.5d.cn/vip/yunkai/200412/39262.html</link><title><![CDATA[fj.fcs.* DEMO预览图-还在完善中，稍后推出TestFCS.swf]]></title><author>yunkai</author><category>AS3</category><pubDate>2004-12-17 8:37:00</pubDate><guid>http://blog.5d.cn/vip/yunkai/200412/39262.html</guid><description><![CDATA[如下图：JConnectionLight是使用JGDI纯代码绘制的，fcs类库近20个类文件，解决了FCS开发中的大多数需要!<br><br>图片如下：<br><img src="/vip/yunkai/upload/2004-12/17_392.jpg" border=0 onload="fitSize(this)">]]></description><tag><![CDATA[]]></tag></item><item><link>http://blog.5d.cn/vip/yunkai/200412/38865.html</link><title><![CDATA[12月23日(下周四)我将做客闪客帝国，欢迎大家届时光临交流!]]></title><author>yunkai</author><category>个人简介</category><pubDate>2004-12-16 6:43:00</pubDate><guid>http://blog.5d.cn/vip/yunkai/200412/38865.html</guid><description><![CDATA[详见http://www.flashempire.com/people/chatview.php?id=19<br><br>边城浪子、THOR、云开等技术派闪客做客帝国聊天室<br>12月23日（星期四） 15:30 - 16:30<br>在 MX 2004 发布和大家对技术重视的回归下，致力于 Flash 技术开发的闪客如云开、luar 等，日益受到大家的关注。 12月23日，边城浪子将与著名技术派闪客THOR、云开一起做客帝国聊天室，敬请期待！<br><br>有问题的可以回帖!届时将准备好回答! <br> <br>]]></description><tag><![CDATA[]]></tag></item><item><link>http://blog.5d.cn/vip/yunkai/200412/38396.html</link><title><![CDATA[JAPublish剖析－抽象与具体]]></title><author>yunkai</author><category>AS3</category><pubDate>2004-12-15 4:43:00</pubDate><guid>http://blog.5d.cn/vip/yunkai/200412/38396.html</guid><description><![CDATA[在开发fj.fcs.*类库（FLASHCOM）时，发现Camera与Microphone都存在一个共同的逻辑，见下图：<br><br><br>图片如下：<br><img src="/vip/yunkai/upload/2004-12/15_533.jpg" border=0 onload="fitSize(this)"><br>测试脚本如下：<br>1、点允许用户使用我的摄像头与麦克风，然后右键设置点拒绝一次，再允许一次,看工作是否正常。<br>2、当&quot;记住&quot;时，工作是否正常，然后取消记住分别拒绝与允许一次，看工作是否正常。<br>这个测试脚本我测试过世纪流年的视频聊天室、BREEZE LIVE、无双的视频会议系统等等，都发现工作不正常，或者是流没有被释放，或者是奇怪的“错误”。<br>共同的逻辑如果不使用抽象类，那么就只好使用复制与粘帖法了，虽然逻辑一样，但是仍然被复制了多份，那OOP如何来解决这个问题呢，就是抽象类，可是会有人说AS2没有象JAVA或C＃一样有抽象类的关键字，其次我们只需要理解什么是抽象类，不可以被实例化，空方法需要子类来实现，那我只将上述的逻辑象伪代码一样表述出来，没有具体的方法则写一个空方法，让子类去实现需要具体的方法。<br>另:fj.fcs.*的DEMO近日将发布，请随时关注。<br>云开工作室正式命名为FJTEAM,所有的命名规则例如fj.graphics.JGDI,fj是FLASH与JAVA的意思。]]></description><tag><![CDATA[]]></tag></item><item><link>http://blog.5d.cn/vip/yunkai/200412/37742.html</link><title><![CDATA[超级SWF跟踪器－巧用LocalConnection]]></title><author>yunkai</author><category>AS3</category><pubDate>2004-12-12 13:50:00</pubDate><guid>http://blog.5d.cn/vip/yunkai/200412/37742.html</guid><description><![CDATA[FLASH中的trace只能在FLASH　IDE中跟踪看到，如果你将SWF发布到网上，是看不到trace的调试信息，这给开发网络FLASH带来的调试上的困难，那有没有好的办法来解决这个问题呢，不管SWF发布到什么地方，打开一个本地SWF跟踪器来接收调试消息那岂不是很好，因为我尝试了各种方法，从SharedObject的本地对象到远程对象到LocalConnection的方法都尝试一遍（使用LocalConnection是从Breeze AddIn中发现的一个“秘密”，感觉SNOW给我了一个提示，发现了其中的“奥秘”），在需要调试的SWF中使用下面的类：<br>class fj.util.JTracer {<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->public static var debug:Boolean=true;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->private static var _instance:JTracer;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->private var _lc:LocalConnection;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->private function JTracer(){<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->this._lc=new LocalConnection();<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->this._lc.allowDomain=function(domain:String):Boolean{<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->return true;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->}<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->}<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->public static function trace(msg:Object):Void{<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->if(!JTracer.debug){<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->return;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->}<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->if(JTracer._instance==undefined){<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->JTracer._instance=new JTracer();<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->}<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->JTracer._instance.traceMsg(msg);<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->}<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->private function traceMsg(msg:Object):Void{<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->trace(msg);<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->this._lc.send(&quot;localhost:trace&quot;,&quot;trace&quot;,this._lc.domain(),msg);<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->}<br>}<br>使用方法很简单，就是Tracer.trace(&quot;我来试试!&quot;);<br>SWF跟踪器中的代码如下：<br>import fj.util.JDelegate;<br><br>class view.JDebug {<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->private var _ui:MovieClip;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->private var _lc:LocalConnection;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->function JDebug(ui){<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->this._ui=ui;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->this.init();<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->}<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->private function init(){<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->this._lc=new LocalConnection();<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->this._lc.allowDomain=function(domain):Boolean{<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->return true;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->}<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->this._lc.connect(&quot;trace&quot;);<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->this._lc.trace=JDelegate.create(this,onTrace);<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->}<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->private function onTrace(domain:String,msg:Object){<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->this._ui.msg_ta.text+=domain+&quot;:&quot;+msg+&quot;\n&quot;;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->}<br>}<br>这个需要放一个组件TextArea名字叫msg_ta,用来显示跟踪的消息！<br><br><a href='upload/2004-12/13_573.swf' target=_blank>Flash 动画</a>：<br><OBJECT codebase=http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0 classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000 width=400 height=300><PARAM NAME=movie VALUE="upload/2004-12/13_573.swf"><PARAM NAME=quality VALUE=high><PARAM NAME=AllowScriptAccess VALUE=never><embed src="upload/2004-12/13_573.swf" quality=high pluginspage=http://www.macromedia.com/go/getflashplayer type=application/x-shockwave-flash width=400 height=300 AllowScriptAccess=never></embed></OBJECT>]]></description><tag><![CDATA[]]></tag></item><item><link>http://blog.5d.cn/vip/yunkai/200412/35259.html</link><title><![CDATA[云开工作室正式成立！]]></title><author>yunkai</author><category>工作室</category><pubDate>2004-12-4 11:41:00</pubDate><guid>http://blog.5d.cn/vip/yunkai/200412/35259.html</guid><description><![CDATA[目前成员有<br>高翔<br>green_tea<br><br>第一个项目FLASH　AS2　GDI类库的开发。<br><br>目前在紧张开发阶段，会有详细的使用文档，欢迎大家来使用并提出宝贵的意见！<br><br>如果你也想参加本工作室，请与我联系！<br><br>要求如下：<br><br>1、会JAVA或C＃或精通UI设计。<br><br>2、平均每天能抽出一小时时间参与。<br><br>3、人品好。<br><br>MSN：liming@itom.com.cn]]></description><tag><![CDATA[]]></tag></item><item><link>http://blog.5d.cn/vip/yunkai/200412/34619.html</link><title><![CDATA[检测连接FCS带宽程序V1.1 欢迎来测试！]]></title><author>yunkai</author><category>AS3</category><pubDate>2004-12-2 4:44:00</pubDate><guid>http://blog.5d.cn/vip/yunkai/200412/34619.html</guid><description><![CDATA[等测试结果收集全后再讲解此程序的原理！请将您的测试结果发到BLOG上，在此表示多谢！！！<br><OBJECT codebase=http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0 classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000 width="220" height="280"><PARAM NAME=movie VALUE="http://202.99.16.52/live/TestBW7.swf"><PARAM NAME=quality VALUE=high><PARAM NAME=AllowScriptAccess VALUE=never><embed src="http://202.99.16.52/live/TestBW7.swf" quality=high pluginspage=http://www.macromedia.com/go/getflashplayer type=application/x-shockwave-flash width="http://202.99.16.52/live/TestBW7.swf" height="http://202.99.16.52/live/TestBW7.swf" AllowScriptAccess=never></embed></OBJECT><br><br>]]></description><tag><![CDATA[]]></tag></item><item><link>http://blog.5d.cn/vip/yunkai/200411/34059.html</link><title><![CDATA[用AS2彻底解决onID3的乱码－深入FLASH编码转码机制！]]></title><author>yunkai</author><category>AS3</category><pubDate>2004-11-30 4:03:00</pubDate><guid>http://blog.5d.cn/vip/yunkai/200411/34059.html</guid><description><![CDATA[如果MP3的ID3标签使用GB2312编码，那么在FLASH脚本输出时是乱码的<br>代码1<br>var s:Sound=new Sound(this);<br>s.loadSound(&quot;dxh.mp3&quot;,false);<br>s.onID3=function(){<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->trace(this.id3.songname);<br>}<br>输入结果是：<br>&amp;para;&amp;iexcl;&amp;Iuml;&amp;atilde;&amp;raquo;&#168;<br>dxh.mp3的ID3v1的标签正确应该是songname=&quot;丁香花&quot;，看来FLASH在转码上出现了问题。<br>我们来看看songname这个字符串中倒底是什么？<br>代码2：<br>var s:Sound=new Sound(this);<br>s.loadSound(&quot;dxh.mp3&quot;,false);<br>s.onID3=function(){<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->var songname:String=this.id3.songname;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->for(var i=0;i&lt;songname.length;i++){<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->trace(songname.charCodeAt(i));<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->}<br>}<br>输出结果是：<br>182<br>161<br>207<br>227<br>187<br>168<br>我们使用计算器转换成16进制就是&quot;B6 A1 CF E3 BB A8&quot;;<br>正好是&quot;丁香花&quot;的GB2312编码，我们还是用FLASH来试试<br>System.useCodepage=true;<br>trace(unescape(&quot;%B6%A1%CF%E3%BB%A8&quot;));<br>输出结果是:<br>丁香花<br>那么为什么代码1出现乱码现象，是因为FLASH将GB2312当作了UTF－8来解释，我们再来测试一下：<br>代码3：<br>var s:Sound=new Sound(this);<br>s.loadSound(&quot;dxh.mp3&quot;,false);<br>s.onID3=function(){<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->var songname:String=this.id3.songname;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->trace(escape(songname));<br>}<br>结果是:<br>%3F%3F%3F%3F%3F%A1%A7<br>问题的原因我们找到了，只要将GB2312转换成UTF－8编码就能显示正常了，可是如果转换呢，大家注意看代码2，我再测试一下想法<br>代码4：<br>System.useCodepage=true;<br>var gb:String=unescape(&quot;%B6%A1%CF%E3%BB%A8&quot;);<br>System.useCodepage=false;<br>trace(gb);<br>trace(escape(gb));<br>输出结果：<br>丁香花<br>%E4%B8%81%E9%A6%99%E8%8A%B1<br>第二行就是“丁香花”的UTF－8编码，说明已经转换成功了，我们来具体实现这个过程<br><br>class lm.utils.LUTF {<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->public function toUTF(source:String):String{<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->var target:String=&quot;&quot;;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->for(var i=0;i&lt;source.length;i++){<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->target+=this.codeTohex(source.charCodeAt(i));<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->}<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->System.useCodepage=true;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->target=unescape(target);<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->System.useCodepage=false;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->return target;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->}<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->private  function codeTohex(code:Number):String{<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->var low:Number=code%16;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->var high:Number=(code-low)/16;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->return &quot;%&quot;+hex(high)+hex(low);<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->}<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->private function hex(code:Number):String{<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->switch(code){<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->case 10:<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->return &quot;A&quot;;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->break;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->case 11:<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->return &quot;B&quot;;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->break;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->case 12:<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->return &quot;C&quot;;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->break;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->case 13:<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->return &quot;D&quot;;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->break;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->case 14:<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->return &quot;E&quot;;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->break;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->case 15:<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->return &quot;F&quot;;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->break;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->default:<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->return String(code);<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->break;<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab--><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->}<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->}<br>}<br><br>我们再来测试一下<br>import lm.utils.LUTF;<br>var u=new LUTF();<br>var s:Sound=new Sound(this);<br>s.loadSound(&quot;dxh.mp3&quot;,false);<br>s.onID3=function(){<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->var songname:String=_root.u.toUTF(this.id3.songname);<br><!--ubbcodetab-->&nbsp;&nbsp;&nbsp;&nbsp;<!--/ubbcodetab-->trace(songname);<br>}<br>输出结果：<br>丁香花<br>到此为此我们已经解决了这个乱码问题，使用这个技巧也可以解决其他的乱码问题！<br>]]></description><tag><![CDATA[]]></tag></item><item><link>http://blog.5d.cn/vip/yunkai/200411/31659.html</link><title><![CDATA[多项目并行开发－框架测试]]></title><author>yunkai</author><category>AS3</category><pubDate>2004-11-22 4:57:00</pubDate><guid>http://blog.5d.cn/vip/yunkai/200411/31659.html</guid><description><![CDATA[记得《敏捷软件开发》中的开发建筑师测试软件示例，是以三个测试题的开发以获得共用的框架，我尝试了一下并行开发，同时开发下列三个项目：<br>1、视频聊天室中的视频音频插件<br><IMG src="http://202.99.16.52/live/vchat.bmp" onload="fitSize(this)" border=0><br>2、仿iCAST的视频广告播放器<br><IMG src="http://202.99.16.52/live/flvPlayer.bmp" onload="fitSize(this)" border=0><br>3、语音录制器<br><IMG src="http://202.99.16.52/live/micRecord.bmp" onload="fitSize(this)" border=0><br>4、基于FCS的MP3播放器<br>经过并行开发，发现80%的代码是可以重用的，分别是LFCS.as负责与FLASHCOM进行通讯，LCamera视频控制器类，LMic音频控制器类，LTimer定时发生器,这些类全部使用事件通讯机制，不同的20%代码基本都是些视图VIEW类。]]></description><tag><![CDATA[]]></tag></item>
</channel>
</rss>
