<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title><![CDATA[柯南的部落格]]></title><link>http://www.conanlwl.net/</link><description><![CDATA[You are not alone]]></description><language>zh-cn</language><copyright><![CDATA[(C)2010 , 柯南的部落格]]></copyright><webMaster><![CDATA[conan-lwl@hotmail.com]]></webMaster><generator>myBlog v1.2.1</generator><pubDate>Sun, 05 Sep 2010 00:07:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[现场演唱歌曲《李雷和韩梅梅》]]></title><link><![CDATA[http://www.conanlwl.net/2009/11/06/xian+chang+yan+chang+ge+qu+li+lei+he+han+mei+mei.aspx]]></link><category><![CDATA[Music Video]]></category><author><![CDATA[Conanlwl]]></author><pubDate>Fri, 06 Nov 2009 19:11:22 GMT</pubDate><description><![CDATA[<p>昔日英语课本上的那些主角到底何去何从,让我们一起翻开那昔日的英语课本吧</p>
<p><embed src="http://www.tudou.com/v/kQ2HV1J-elA" width="420" height="363" scale="ShowAll" loop="loop" menu="menu" wmode="opaque" quality="1" type="application/x-shockwave-flash"></embed></p>]]></description><wfw:commentRss><![CDATA[http://www.conanlwl.net/Feed/Comment/183.aspx]]></wfw:commentRss></item><item><title><![CDATA[拼图设计思路与源码二[自动吸附篇]]]></title><link><![CDATA[http://www.conanlwl.net/2009/10/28/pin+tu+she+ji+si+lu+yu+yuan+ma+er+zi+dong+xi+fu+pian.aspx]]></link><category><![CDATA[ActionScript3]]></category><author><![CDATA[Conanlwl]]></author><pubDate>Wed, 28 Oct 2009 18:14:18 GMT</pubDate><description><![CDATA[<p>通过上一篇的画图篇,我们就可以使拼图在游戏舞台上随意的铺放了,但是到目前为止还不会吸附,也就是当两张图案正确的相邻两个拼图拼在一起的时候不会吸在一起.</p>
<p>我们先来回顾一下上一节中所定义的碎片类Piece</p>
<div class="source" style="color: #000000; font-family: '[object]','Lucida Console','Courier New','monospace'; background-color: #f9f7ed" jquery1256726143359="14">
<p><span style="font-weight: bold; color: #000080">package</span> <span style="color: #000000">net.conanlwl</span><br />
<span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">import</span> <span style="color: #000000">flash.display.Sprite</span>;<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">class</span> <span style="color: #000000">Piece</span> <span style="font-weight: bold; color: #000080">extends</span> <span style="color: #000000">Sprite</span><br />
&nbsp;&nbsp;&nbsp; <span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">private</span> <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">m_row</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">uint</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">private</span> <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">m_col</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">uint</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">Up</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Object</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">Right</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Object</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">Buttom</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Object</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">Left</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Object</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">private</span> <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">m_virtualX</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Number</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">private</span> <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">m_virtualY</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Number</span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">function </span><span style="color: #000000">Piece</span>(<span style="color: #000000">_row</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">uint</span><span style="color: #000000">,</span><span style="color: #000000">_col</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">uint</span><span style="color: #000000">,</span><span style="color: #000000">_virtualX</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Number</span><span style="color: #000000">,</span><span style="color: #000000">_virtualY</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Number</span>)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">this</span><span style="color: #000000">.</span><span style="color: #ff0000">m_row</span> <span style="color: #000000">=</span> <span style="color: #000000">_row</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">this</span><span style="color: #000000">.</span><span style="color: #ff0000">m_col</span> <span style="color: #000000">=</span> <span style="color: #000000">_col</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">m_virtualX</span> <span style="color: #000000">=</span> <span style="color: #000000">_virtualX</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">m_virtualY</span> <span style="color: #000000">=</span> <span style="color: #000000">_virtualY</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">function</span> <span style="font-weight: bold; color: #000080">get</span> <span style="color: #000000">virtualX</span><span style="color: #000000">():</span><span style="color: #000000">Number</span><span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">return</span> <span style="color: #000000">m_virtualX</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">function</span> <span style="font-weight: bold; color: #000080">get</span> <span style="color: #000000">virtualY</span><span style="color: #000000">():</span><span style="color: #000000">Number</span><span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">return</span> <span style="color: #000000">m_virtualY</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">function</span> <span style="font-weight: bold; color: #000080">get</span> <span style="color: #000000">Row</span><span style="color: #000000">():</span><span style="color: #000000">uint</span><span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">return</span> <span style="color: #000000">m_row</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">function</span> <span style="font-weight: bold; color: #000080">get</span> <span style="color: #000000">Col</span><span style="color: #000000">():</span><span style="color: #000000">uint</span><span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">return</span> <span style="color: #000000">m_col</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
<span style="color: #000000">}</span></p>
<p>其中的<span style="color: #000000">virtualX,<span style="color: #000000">virtualY,<span style="color: #000000">Row,<span style="color: #000000">Col都是只读的,也即是说,在声明之后,这四个值就是固定的了.</span></span></span></span></p>
<p><span style="color: #000000"><span style="color: #000000"><span style="color: #000000"><span style="color: #000000">我们给一张拼好的图的每个小碎片做一个编号.如图1:</span></span></span></span>&nbsp;</p>
</div>
<p><img alt="" src="/UserFiles/200910/2818561712.jpg" /><br />
图1</p>
<p>那么A的Row与Col就为0,0;相对拼图的左上角的坐标virtualX=0,virtualY=0<br />
再L的Row与Col就为2,1;相对拼图的左上角的坐标就为virtualX=1*m_pieceW,virtualY=2*m_pieceH<br />
再M的Row与Col就为2,2;相对拼图的左上角的坐标就为virtualX=2*m_pieceW,virtualY=2*m_pieceH</p>
<p>所以,当我们图中的碎片打乱以后,这些数值都是不会变的.我们在吸附判断中,先不考虑旋转以后的吸附判断.假设所有的图片都是正放的,都是0度.&nbsp;</p>
<p><img alt="" src="/UserFiles/200910/2819360665.jpg" /><br />
图2</p>
<p>当我们拿着L靠近M并产生碰撞时(如图2),我们要如何判断他们是正确的相对位置呢?</p>
<p>使用他们的行列差值来判断?也就是Row相等,且L的Col等于M的Col-1?当然,这在两上碎片都是一小块的时候,这种方法是成立的,但如果当我们L与M拼好,再拿个N或者K来拼时,就未必能成了.</p>
<p>所以我们采用坐标差值法来比较.L与M在舞台中都有属于自己的坐标.分别设为L.x,L.y与M.x,M.y,当我们移动L或M时,他们的坐标就相应的变化.但L.virtualX,L.virtualY与M.virtualX,M.virtualY是不变的.</p>
<p>因此,我们认为,当L与M的坐标差与他们的绝对虚拟坐标差相等或小于一个误差值时,吸附成立.</p>
<div class="source" style="color: #000000; font-family: '[object]','Lucida Console','Courier New','monospace'; background-color: #f9f7ed" jquery1256730191796="14">
<p><span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">inaccuracy</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Number</span> <span style="color: #000000">=</span> <span style="color: #0000ff">8</span>; <span style="color: #008800; font-style: italic">//吸附的误差值</span><br />
<span style="font-weight: bold; color: #000080">if</span>(<span style="color: #000000">Math</span><span style="color: #000000">.</span><span style="color: #ff0000">abs</span>((<span style="color: #000000">L</span><span style="color: #000000">.</span><span style="color: #ff0000">x</span> <span style="color: #000000">-</span> <span style="color: #000000">M</span><span style="color: #000000">.</span><span style="color: #ff0000">x</span>) <span style="color: #000000">-</span> (<span style="color: #000000">L</span><span style="color: #000000">.</span><span style="color: #ff0000">virtualX</span> <span style="color: #000000">-</span> <span style="color: #000000">M</span><span style="color: #000000">.</span><span style="color: #ff0000">virtualX</span>)) <span style="color: #000000">&lt;=</span><span style="color: #000000">inaccuracy</span> <span style="color: #000000">){//</span><span style="color: #a61717; background-color: #e3d2d2">当前</span><span style="color: #000000">X</span><span style="color: #a61717; background-color: #e3d2d2">坐标的差值</span><span style="color: #000000">,</span><span style="color: #a61717; background-color: #e3d2d2">与他们的虚坐标的差值接近时</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-weight: bold; color: #000080">if</span>(<span style="color: #000000">Math</span><span style="color: #000000">.</span><span style="color: #ff0000">abs</span>((<span style="color: #000000">L</span><span style="color: #000000">.</span><span style="color: #ff0000">y</span> <span style="color: #000000">-</span> <span style="color: #000000">M</span><span style="color: #000000">.</span><span style="color: #ff0000">y</span>) <span style="color: #000000">-</span> (<span style="color: #000000">L</span><span style="color: #000000">.</span><span style="color: #ff0000">virtualY</span> <span style="color: #000000">-</span> <span style="color: #000000">M</span><span style="color: #000000">.</span><span style="color: #ff0000">virtualY</span>)) <span style="color: #000000">&lt;=</span><span style="color: #000000">inaccuracy</span><span style="color: #000000">){</span>&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #008800; font-style: italic">//吸附条件成立</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #000000">}</span><br />
<span style="color: #000000">}</span></p>
<p>当我们用鼠标拿着L与M碰撞并吸附条件成立时,就将L从舞台转移到M里面去,也即M.addChild(L),并修正L的坐标与M能够准确拼合.至此L与M成为一个整体M,如图3</p>
</div>
<p><img alt="" src="/UserFiles/200910/2819563459.jpg" /><br />
图3</p>
<p>注意,因为我们将L移到M里面时,只修正L的坐标,所以添加后的大M碎片的坐标原点还是跟原来一样,仍然如图3中箭头所指的点.所以当我们把箭头所指的点移到舞台的0,0点的时候,大M碎片的坐标才是0,0</p>
<p>&nbsp;</p>
<p><img alt="" src="/UserFiles/200910/2820062865.jpg" /><br />
图4</p>
<p>接差我们拿着H与M靠近发生碰撞并判断吸附条件成立时(注意M.x,M.y指的是哪个点),H又加入到了M之中.相反,如果我们拿着大M与H靠近发生碰撞并吸附条件成立时,M将先自己里面的L拿出来搬到H里面去,最后再自己搬到H里面去,也即先H.addChild(L)再H.addChild(M),此时大碎片即为H</p>
<p>接着,我们先把大H放一边,将R与W拼一起,成为一个大W.如图5</p>
<p><img alt="" src="/UserFiles/200910/2820141700.jpg" /><br />
图5</p>
<p>然后再拿着大H与大W靠近,如图6</p>
<p><img alt="" src="/UserFiles/200910/2820181117.jpg" /><br />
图6</p>
<p>仍然按照下面的公式判断吸附条件,注意H.x,H.y与W.x,W.y指的是哪两个点的坐标</p>
<div class="source" style="color: #000000; font-family: '[object]','Lucida Console','Courier New','monospace'; background-color: #f9f7ed" jquery1256732006593="14">
<p><span style="font-weight: bold; color: #000080">if</span>(<span style="color: #000000">Math</span><span style="color: #000000">.</span><span style="color: #ff0000">abs</span>((<span style="color: #000000">H</span><span style="color: #000000">.</span><span style="color: #ff0000">x</span> <span style="color: #000000">-</span> <span style="color: #000000">W</span><span style="color: #000000">.</span><span style="color: #ff0000">x</span>) <span style="color: #000000">-</span> (<span style="color: #000000">H</span><span style="color: #000000">.</span><span style="color: #ff0000">virtualX</span> <span style="color: #000000">-</span> <span style="color: #000000">W</span><span style="color: #000000">.</span><span style="color: #ff0000">virtualX</span>)) <span style="color: #000000">&lt;=</span><span style="color: #000000">inaccuracy</span> <span style="color: #000000">){//</span><span style="color: #a61717; background-color: #e3d2d2">当前</span><span style="color: #000000">X</span><span style="color: #a61717; background-color: #e3d2d2">坐标的差值</span><span style="color: #000000">,</span><span style="color: #a61717; background-color: #e3d2d2">与他们的虚坐标的差值接近时</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-weight: bold; color: #000080">if</span>(<span style="color: #000000">Math</span><span style="color: #000000">.</span><span style="color: #ff0000">abs</span>((<span style="color: #000000">H</span><span style="color: #000000">.</span><span style="color: #ff0000">y</span> <span style="color: #000000">-</span> <span style="color: #000000">W</span><span style="color: #000000">.</span><span style="color: #ff0000">y</span>) <span style="color: #000000">-</span> (<span style="color: #000000">H</span><span style="color: #000000">.</span><span style="color: #ff0000">virtualY</span> <span style="color: #000000">-</span> <span style="color: #000000">W</span><span style="color: #000000">.</span><span style="color: #ff0000">virtualY</span>)) <span style="color: #000000">&lt;=</span><span style="color: #000000">inaccuracy</span><span style="color: #000000">){</span>&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #008800; font-style: italic">//吸附条件成立</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #000000">}</span><br />
<span style="color: #000000">}</span></p>
<p>如果是拿H碰W,则将H里的三个小碎片一片一片地搬到W里面去,反之,则W搬H.如果此时仍用Row与Col的差值来判断,就会发现吸附条件不成立了.因为H的Row与Col为1,2,而W的则为4,2,所以虽然他们处于同列,但行数却差了4-1=3.所以行列差值比较法就不成立了.</p>
<p>为什么要将大H的三个小碎片一片一片地搬到大W里面,而不直接将大H搬到大W里面去就行了呢?这是为了保证舞台中碎片的层次关系只有二层而为避免对角吸附也会成立的情况做准备(如图7).也即大碎片里面就是小碎片了,小碎片里不会再有小碎片.</p>
</div>
<p><img alt="" src="/UserFiles/200910/2820301498.jpg" /><br />
图7</p>
<p>按照我们前面的碰撞检测吸附判断条件,上面的情部也是成立的,所以他也会被吸附,所以我们必须保证W以下W里面的小碎片和D以及D下面的小碎片(如果有)之间,必须至少有两个小碎片是相邻的.吸附才会真正的成立</p>
<div class="source" style="color: #000000; font-family: '[object]','Lucida Console','Courier New','monospace'; background-color: #f9f7ed" jquery1256733013265="14">
<p><span style="color: #008800; font-style: italic">//检查p1与p2里是否相邻连接,避免出现对角连接</span><br />
<span style="font-weight: bold; color: #000080">private</span> <span style="font-weight: bold; color: #000080">function </span><span style="color: #000000">testHit</span>(<span style="color: #000000">p1</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Piece</span><span style="color: #000000">,</span><span style="color: #000000">p2</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Piece</span><span style="color: #000000">):</span><span style="font-weight: bold; color: #000080">Boolean</span><span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-weight: bold; color: #000080">if</span>(<span style="color: #000000">Math</span><span style="color: #000000">.</span><span style="color: #ff0000">abs</span>(<span style="color: #000000">p1</span><span style="color: #000000">.</span><span style="color: #ff0000">Row</span> <span style="color: #000000">-</span> <span style="color: #000000">p2</span><span style="color: #000000">.</span><span style="color: #ff0000">Row</span>) <span style="color: #000000">+</span> <span style="color: #000000">Math</span><span style="color: #000000">.</span><span style="color: #ff0000">abs</span>(<span style="color: #000000">p1</span><span style="color: #000000">.</span><span style="color: #ff0000">Col</span> <span style="color: #000000">-</span> <span style="color: #000000">p2</span><span style="color: #000000">.</span><span style="color: #ff0000">Col</span>) <span style="color: #000000">==</span> <span style="color: #0000ff">1</span>) <span style="font-weight: bold; color: #000080">return</span> <span style="font-weight: bold; color: #000080">true</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-weight: bold; color: #000080">var</span> p<span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Piece</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">i</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">uint</span> <span style="color: #000000">=</span> <span style="color: #0000ff">0</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">j</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">uint</span> <span style="color: #000000">=</span> <span style="color: #0000ff">0</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-weight: bold; color: #000080">for</span>(<span style="color: #000000">i</span><span style="color: #000000">=</span><span style="color: #0000ff">0</span>;<span style="color: #000000">i</span><span style="color: #000000">&lt;</span><span style="color: #000000">p2</span><span style="color: #000000">.</span><span style="color: #ff0000">numChildren</span>;<span style="color: #000000">i</span><span style="color: #000000">++){</span> <span style="color: #008800; font-style: italic">//p1自身与p2的child碰撞</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p <span style="color: #000000">=</span> <span style="color: #000000">p2</span><span style="color: #000000">.</span><span style="color: #ff0000">getChildAt</span>(<span style="color: #000000">i</span>) <span style="font-weight: bold; color: #000080">as</span> <span style="color: #000000">Piece</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-weight: bold; color: #000080">if</span>(<span style="color: #000000">Math</span><span style="color: #000000">.</span><span style="color: #ff0000">abs</span>(<span style="color: #000000">p1</span><span style="color: #000000">.</span><span style="color: #ff0000">Row</span> <span style="color: #000000">-</span> p<span style="color: #000000">.</span><span style="color: #ff0000">Row</span>) <span style="color: #000000">+</span> <span style="color: #000000">Math</span><span style="color: #000000">.</span><span style="color: #ff0000">abs</span>(<span style="color: #000000">p1</span><span style="color: #000000">.</span><span style="color: #ff0000">Col</span> <span style="color: #000000">-</span> p<span style="color: #000000">.</span><span style="color: #ff0000">Col</span>) <span style="color: #000000">==</span> <span style="color: #0000ff">1</span>) <span style="font-weight: bold; color: #000080">return</span> <span style="font-weight: bold; color: #000080">true</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-weight: bold; color: #000080">for</span>(<span style="color: #000000">i</span><span style="color: #000000">=</span><span style="color: #0000ff">0</span>;<span style="color: #000000">i</span><span style="color: #000000">&lt;</span><span style="color: #000000">p1</span><span style="color: #000000">.</span><span style="color: #ff0000">numChildren</span>;<span style="color: #000000">i</span><span style="color: #000000">++){</span> <span style="color: #008800; font-style: italic">//p2自身与p1的child碰撞</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p <span style="color: #000000">=</span> <span style="color: #000000">p1</span><span style="color: #000000">.</span><span style="color: #ff0000">getChildAt</span>(<span style="color: #000000">i</span>) <span style="font-weight: bold; color: #000080">as</span> <span style="color: #000000">Piece</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-weight: bold; color: #000080">if</span>(<span style="color: #000000">Math</span><span style="color: #000000">.</span><span style="color: #ff0000">abs</span>(<span style="color: #000000">p2</span><span style="color: #000000">.</span><span style="color: #ff0000">Row</span> <span style="color: #000000">-</span> p<span style="color: #000000">.</span><span style="color: #ff0000">Row</span>) <span style="color: #000000">+</span> <span style="color: #000000">Math</span><span style="color: #000000">.</span><span style="color: #ff0000">abs</span>(<span style="color: #000000">p2</span><span style="color: #000000">.</span><span style="color: #ff0000">Col</span> <span style="color: #000000">-</span> p<span style="color: #000000">.</span><span style="color: #ff0000">Col</span>) <span style="color: #000000">==</span> <span style="color: #0000ff">1</span>) <span style="font-weight: bold; color: #000080">return</span> <span style="font-weight: bold; color: #000080">true</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-weight: bold; color: #000080">for</span>(<span style="color: #000000">i</span><span style="color: #000000">=</span><span style="color: #0000ff">0</span>;<span style="color: #000000">i</span><span style="color: #000000">&lt;</span><span style="color: #000000">p1</span><span style="color: #000000">.</span><span style="color: #ff0000">numChildren</span>;<span style="color: #000000">i</span><span style="color: #000000">++){//</span><span style="color: #000000">p1</span><span style="color: #a61717; background-color: #e3d2d2">的</span><span style="color: #000000">child</span><span style="color: #a61717; background-color: #e3d2d2">与</span><span style="color: #000000">p2</span><span style="color: #a61717; background-color: #e3d2d2">的</span><span style="color: #000000">child</span><span style="color: #a61717; background-color: #e3d2d2">碰撞</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-weight: bold; color: #000080">for</span>(<span style="color: #000000">j</span><span style="color: #000000">=</span><span style="color: #0000ff">0</span>;<span style="color: #000000">j</span><span style="color: #000000">&lt;</span><span style="color: #000000">p2</span><span style="color: #000000">.</span><span style="color: #ff0000">numChildren</span>;<span style="color: #000000">j</span><span style="color: #000000">++){</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p <span style="color: #000000">=</span> <span style="color: #000000">p1</span><span style="color: #000000">.</span><span style="color: #ff0000">getChildAt</span>(<span style="color: #000000">i</span>) <span style="font-weight: bold; color: #000080">as</span> <span style="color: #000000">Piece</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-weight: bold; color: #000080">var</span> pp<span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Piece</span> <span style="color: #000000">=</span> <span style="color: #000000">p2</span><span style="color: #000000">.</span><span style="color: #ff0000">getChildAt</span>(<span style="color: #000000">j</span>) <span style="font-weight: bold; color: #000080">as</span> <span style="color: #000000">Piece</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-weight: bold; color: #000080">if</span>(<span style="color: #000000">Math</span><span style="color: #000000">.</span><span style="color: #ff0000">abs</span>(pp<span style="color: #000000">.</span><span style="color: #ff0000">Row</span> <span style="color: #000000">-</span> p<span style="color: #000000">.</span><span style="color: #ff0000">Row</span>) <span style="color: #000000">+</span> <span style="color: #000000">Math</span><span style="color: #000000">.</span><span style="color: #ff0000">abs</span>(pp<span style="color: #000000">.</span><span style="color: #ff0000">Col</span> <span style="color: #000000">-</span> p<span style="color: #000000">.</span><span style="color: #ff0000">Col</span>) <span style="color: #000000">==</span> <span style="color: #0000ff">1</span>) <span style="font-weight: bold; color: #000080">return</span> <span style="font-weight: bold; color: #000080">true</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #000000">}</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-weight: bold; color: #000080">return</span> <span style="font-weight: bold; color: #000080">false</span>;&nbsp;<br />
<span style="color: #000000">}</span></p>
<p>所以绕了这么大的一个圈,就是为了避免出现这样的一个问题,所以如果你的游戏是允许对角拼接的话,那么你大可不用这么麻烦,仍然按照上面的吸附判断公式,然后直接A.addChild(B)或者B.addChild(A)就行了..无论是大A碎片或者是小A碎片,总之将一个大碎片直接搬到另一块碎片里面去就行了.</p>
<p>至此我们整个吸附判断的过程就完成了.所以当我们扩展到多角度的吸附判断时,只是上面的公式中,x与y,virtualX与virtualY之间的相对关系反生了一些变化而已.下面就是扩展多角度吸附判断的公式,</p>
<div class="source" style="color: #000000; font-family: '[object]','Lucida Console','Courier New','monospace'; background-color: #f9f7ed" jquery1256733477531="14">
<p><span style="font-weight: bold; color: #000080">private</span> <span style="font-weight: bold; color: #000080">function </span><span style="color: #000000">testPos</span>(<span style="color: #000000">p1</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Piece</span><span style="color: #000000">,</span><span style="color: #000000">p2</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Piece</span><span style="color: #000000">):</span><span style="font-weight: bold; color: #000080">Boolean</span><span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">inaccuracy</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Number</span> <span style="color: #000000">=</span> <span style="color: #0000ff">8</span>; <span style="color: #008800; font-style: italic">//吸附的误差值&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">if</span>(<span style="color: #000000">p1</span><span style="color: #000000">.</span><span style="color: #ff0000">rotation</span> <span style="color: #000000">==</span> <span style="color: #000000">p2</span><span style="color: #000000">.</span><span style="color: #ff0000">rotation</span><span style="color: #000000">){</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #008800; font-style: italic">//trace(p1.rotation);</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">if</span>(<span style="color: #000000">p1</span><span style="color: #000000">.</span><span style="color: #ff0000">rotation</span><span style="color: #000000">==</span><span style="color: #0000ff">0</span> <span style="color: #000000">&amp;&amp;</span> <span style="color: #000000">Math</span><span style="color: #000000">.</span><span style="color: #ff0000">abs</span>((<span style="color: #000000">p1</span><span style="color: #000000">.</span><span style="color: #ff0000">x</span> <span style="color: #000000">-</span> <span style="color: #000000">p2</span><span style="color: #000000">.</span><span style="color: #ff0000">x</span>) <span style="color: #000000">-</span> (<span style="color: #000000">p1</span><span style="color: #000000">.</span><span style="color: #ff0000">virtualX</span> <span style="color: #000000">-</span> <span style="color: #000000">p2</span><span style="color: #000000">.</span><span style="color: #ff0000">virtualX</span>)) <span style="color: #000000">&lt;=</span><span style="color: #000000">inaccuracy</span> <span style="color: #000000">){//</span><span style="color: #a61717; background-color: #e3d2d2">当前</span><span style="color: #000000">X</span><span style="color: #a61717; background-color: #e3d2d2">坐标的差值</span><span style="color: #000000">,</span><span style="color: #a61717; background-color: #e3d2d2">与他们的虚坐标的差值接近时</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">if</span>(<span style="color: #000000">Math</span><span style="color: #000000">.</span><span style="color: #ff0000">abs</span>((<span style="color: #000000">p1</span><span style="color: #000000">.</span><span style="color: #ff0000">y</span> <span style="color: #000000">-</span> <span style="color: #000000">p2</span><span style="color: #000000">.</span><span style="color: #ff0000">y</span>) <span style="color: #000000">-</span> (<span style="color: #000000">p1</span><span style="color: #000000">.</span><span style="color: #ff0000">virtualY</span> <span style="color: #000000">-</span> <span style="color: #000000">p2</span><span style="color: #000000">.</span><span style="color: #ff0000">virtualY</span>)) <span style="color: #000000">&lt;=</span><span style="color: #000000">inaccuracy</span><span style="color: #000000">){</span>&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">if</span>(<span style="color: #000000">testHit</span>(<span style="color: #000000">p1</span><span style="color: #000000">,</span><span style="color: #000000">p2</span><span style="color: #000000">)){</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">moveChild</span>(<span style="color: #000000">p1</span><span style="color: #000000">,</span><span style="color: #000000">p2</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">m_pieceLayer</span><span style="color: #000000">.</span><span style="color: #ff0000">addChild</span>(<span style="color: #000000">p2</span><span style="color: #000000">);//</span><span style="color: #a61717; background-color: #e3d2d2">移到最上面</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">else</span> <span style="font-weight: bold; color: #000080">if</span>(<span style="color: #000000">p1</span><span style="color: #000000">.</span><span style="color: #ff0000">rotation</span><span style="color: #000000">==</span><span style="color: #0000ff">90</span> <span style="color: #000000">&amp;&amp;</span> <span style="color: #000000">Math</span><span style="color: #000000">.</span><span style="color: #ff0000">abs</span>((<span style="color: #000000">p1</span><span style="color: #000000">.</span><span style="color: #ff0000">x</span> <span style="color: #000000">-</span> <span style="color: #000000">p2</span><span style="color: #000000">.</span><span style="color: #ff0000">x</span>) <span style="color: #000000">-</span> (<span style="color: #000000">p2</span><span style="color: #000000">.</span><span style="color: #ff0000">virtualY</span> <span style="color: #000000">-</span> <span style="color: #000000">p1</span><span style="color: #000000">.</span><span style="color: #ff0000">virtualY</span>)) <span style="color: #000000">&lt;=</span><span style="color: #000000">inaccuracy</span> <span style="color: #000000">){//</span><span style="color: #a61717; background-color: #e3d2d2">当前</span><span style="color: #000000">X</span><span style="color: #a61717; background-color: #e3d2d2">坐标的差值</span><span style="color: #000000">,</span><span style="color: #a61717; background-color: #e3d2d2">与他们的虚坐标的差值接近时</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">if</span>(<span style="color: #000000">Math</span><span style="color: #000000">.</span><span style="color: #ff0000">abs</span>((<span style="color: #000000">p1</span><span style="color: #000000">.</span><span style="color: #ff0000">y</span> <span style="color: #000000">-</span> <span style="color: #000000">p2</span><span style="color: #000000">.</span><span style="color: #ff0000">y</span>) <span style="color: #000000">-</span> (<span style="color: #000000">p1</span><span style="color: #000000">.</span><span style="color: #ff0000">virtualX</span> <span style="color: #000000">-</span> <span style="color: #000000">p2</span><span style="color: #000000">.</span><span style="color: #ff0000">virtualX</span>)) <span style="color: #000000">&lt;=</span><span style="color: #000000">inaccuracy</span><span style="color: #000000">){</span>&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">if</span>(<span style="color: #000000">testHit</span>(<span style="color: #000000">p1</span><span style="color: #000000">,</span><span style="color: #000000">p2</span><span style="color: #000000">)){</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">moveChild</span>(<span style="color: #000000">p1</span><span style="color: #000000">,</span><span style="color: #000000">p2</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">m_pieceLayer</span><span style="color: #000000">.</span><span style="color: #ff0000">addChild</span>(<span style="color: #000000">p2</span><span style="color: #000000">);//</span><span style="color: #a61717; background-color: #e3d2d2">移到最上面</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">else</span> <span style="font-weight: bold; color: #000080">if</span>(<span style="color: #000000">p1</span><span style="color: #000000">.</span><span style="color: #ff0000">rotation</span><span style="color: #000000">==</span><span style="color: #0000ff">180</span> <span style="color: #000000">&amp;&amp;</span> <span style="color: #000000">Math</span><span style="color: #000000">.</span><span style="color: #ff0000">abs</span>((<span style="color: #000000">p2</span><span style="color: #000000">.</span><span style="color: #ff0000">x</span> <span style="color: #000000">-</span> <span style="color: #000000">p1</span><span style="color: #000000">.</span><span style="color: #ff0000">x</span>) <span style="color: #000000">-</span> (<span style="color: #000000">p1</span><span style="color: #000000">.</span><span style="color: #ff0000">virtualX</span> <span style="color: #000000">-</span> <span style="color: #000000">p2</span><span style="color: #000000">.</span><span style="color: #ff0000">virtualX</span>)) <span style="color: #000000">&lt;=</span><span style="color: #000000">inaccuracy</span> <span style="color: #000000">){//</span><span style="color: #a61717; background-color: #e3d2d2">当前</span><span style="color: #000000">X</span><span style="color: #a61717; background-color: #e3d2d2">坐标的差值</span><span style="color: #000000">,</span><span style="color: #a61717; background-color: #e3d2d2">与他们的虚坐标的差值接近时</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">if</span>(<span style="color: #000000">Math</span><span style="color: #000000">.</span><span style="color: #ff0000">abs</span>((<span style="color: #000000">p2</span><span style="color: #000000">.</span><span style="color: #ff0000">y</span> <span style="color: #000000">-</span> <span style="color: #000000">p1</span><span style="color: #000000">.</span><span style="color: #ff0000">y</span>) <span style="color: #000000">-</span> (<span style="color: #000000">p1</span><span style="color: #000000">.</span><span style="color: #ff0000">virtualY</span> <span style="color: #000000">-</span> <span style="color: #000000">p2</span><span style="color: #000000">.</span><span style="color: #ff0000">virtualY</span>)) <span style="color: #000000">&lt;=</span><span style="color: #000000">inaccuracy</span><span style="color: #000000">){</span>&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">if</span>(<span style="color: #000000">testHit</span>(<span style="color: #000000">p1</span><span style="color: #000000">,</span><span style="color: #000000">p2</span><span style="color: #000000">)){</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">moveChild</span>(<span style="color: #000000">p1</span><span style="color: #000000">,</span><span style="color: #000000">p2</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">m_pieceLayer</span><span style="color: #000000">.</span><span style="color: #ff0000">addChild</span>(<span style="color: #000000">p2</span><span style="color: #000000">);//</span><span style="color: #a61717; background-color: #e3d2d2">移到最上面</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">else</span> <span style="font-weight: bold; color: #000080">if</span>(<span style="color: #000000">p1</span><span style="color: #000000">.</span><span style="color: #ff0000">rotation</span><span style="color: #000000">==-</span><span style="color: #0000ff">90</span> <span style="color: #000000">&amp;&amp;</span> <span style="color: #000000">Math</span><span style="color: #000000">.</span><span style="color: #ff0000">abs</span>((<span style="color: #000000">p1</span><span style="color: #000000">.</span><span style="color: #ff0000">x</span> <span style="color: #000000">-</span> <span style="color: #000000">p2</span><span style="color: #000000">.</span><span style="color: #ff0000">x</span>) <span style="color: #000000">-</span> (<span style="color: #000000">p1</span><span style="color: #000000">.</span><span style="color: #ff0000">virtualY</span> <span style="color: #000000">-</span> <span style="color: #000000">p2</span><span style="color: #000000">.</span><span style="color: #ff0000">virtualY</span>)) <span style="color: #000000">&lt;=</span><span style="color: #000000">inaccuracy</span> <span style="color: #000000">){//</span><span style="color: #a61717; background-color: #e3d2d2">当前</span><span style="color: #000000">X</span><span style="color: #a61717; background-color: #e3d2d2">坐标的差值</span><span style="color: #000000">,</span><span style="color: #a61717; background-color: #e3d2d2">与他们的虚坐标的差值接近时</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">if</span>(<span style="color: #000000">Math</span><span style="color: #000000">.</span><span style="color: #ff0000">abs</span>((<span style="color: #000000">p1</span><span style="color: #000000">.</span><span style="color: #ff0000">y</span> <span style="color: #000000">-</span> <span style="color: #000000">p2</span><span style="color: #000000">.</span><span style="color: #ff0000">y</span>) <span style="color: #000000">-</span> (<span style="color: #000000">p2</span><span style="color: #000000">.</span><span style="color: #ff0000">virtualX</span> <span style="color: #000000">-</span> <span style="color: #000000">p1</span><span style="color: #000000">.</span><span style="color: #ff0000">virtualX</span>)) <span style="color: #000000">&lt;=</span><span style="color: #000000">inaccuracy</span><span style="color: #000000">){</span>&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">if</span>(<span style="color: #000000">testHit</span>(<span style="color: #000000">p1</span><span style="color: #000000">,</span><span style="color: #000000">p2</span><span style="color: #000000">)){</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">moveChild</span>(<span style="color: #000000">p1</span><span style="color: #000000">,</span><span style="color: #000000">p2</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">m_pieceLayer</span><span style="color: #000000">.</span><span style="color: #ff0000">addChild</span>(<span style="color: #000000">p2</span><span style="color: #000000">);//</span><span style="color: #a61717; background-color: #e3d2d2">移到最上面</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">return</span> <span style="font-weight: bold; color: #000080">true</span>;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span></p>
<p>任何物体在舞台中旋转的角度都在-180~180之间.所以我们必须在旋转一个物体之后再加上360度,才会避免因为P1的角度为-180度与P2的角度为180度拼接不成功的状况.</p>
<p>在本DEMO中,物体绕着鼠标旋转使用了L4CD(<a href="http://L4cd.Net">Http://L4cd.Net</a>)的绕任意点旋转类iPointRegister.</p>
<p><a target="_blank" href="http://www.conanlwl.net/UserFiles/puzzle.rar"><strong><font color="#ff0000" size="7">源码下载</font></strong></a></p>
</div>
</div>]]></description><wfw:commentRss><![CDATA[http://www.conanlwl.net/Feed/Comment/182.aspx]]></wfw:commentRss></item><item><title><![CDATA[拼图设计思路与源码一[画图篇]]]></title><link><![CDATA[http://www.conanlwl.net/2009/10/28/pin+tu+she+ji+si+lu+yu+yuan+ma+yi+hua+tu+pian.aspx]]></link><category><![CDATA[ActionScript3]]></category><author><![CDATA[Conanlwl]]></author><pubDate>Wed, 28 Oct 2009 16:34:16 GMT</pubDate><description><![CDATA[<p><a target="_blank" href="http://www.conanlwl.net/demo/puzzle/puzzle.swf"><font size="5"><strong>游戏试玩</strong></font></a></p>
<p>想要制作非正规矩形的凹凸拼图,第一步就得先画好每一个小拼图的轮廓.然后再通过位图填充,从而制作出每一个小拼图碎片.小碎片的轮廓示意图如下图所示:</p>
<p><img alt="" src="/UserFiles/200910/2816380400.jpg" /><br />
图1</p>
<p>如图1所示,为拼图中左上角的一个碎片,所以该碎片只要画右边与下边的轮廓,其它边都为直线.</p>
<p>每一边的轮廓都由一个圆弧(BCD)以及圆弧两个端点(B点,D点)与矩形的两个角(A点与E点)相连的两条直线(AB与DE)组成.所以一整个碎片轮廓就是由这一系列的直线与弧线组成的.</p>
<p>为了不使每一个碎片的外形都一样,所以加了一小些随机的因素.例如圆弧的凹与凸,以及圆心的位置.</p>
<p>当圆弧随机为凸时,圆心的位置在图中的直线OP上的随意一点.相反,为凹时,则为O'P上的随意一点.其中P为AE的中点.当然,我们也可以在AE中取一小段线段作为P的随机点也行.</p>
<p>在本实例中,为了不让四条边的圆弧都为凹时出现相交的情况,所以圆弧的半径为碎片矩形长宽中最短一边的1/6.且圆弧的圆心角都为270度.当然在保证四条边的弧线都为凹时不相交的情况下,半径以及圆心角也都可以加上一些随机的因素的.</p>
<p>至此,我们只要用一个数组来存储四条边上的这些圆弧以及端点角点的信息,然后通过一个连线的函数来进行画图,就可以画出一个封闭的拼图碎片轮廓了.</p>
<p>其它碎片,我们要计算的也只是右边与下边,左边与上边都是沿着上一个碎片的信息画的.如第二列的左边,其实就与第一列的右边是一样的.第二行的上边其实就是第一行的下边.</p>
<p>另外需要注意的是,AS3中对于封闭区域轮廓的要求必须是头尾顺笔连接而成..如图中的右边.画图的顺序必须是:A连到B,然后两从B顺时针画圆弧BCD,再D连到E.不能先连直线AB与DE,然后再画一个圆弧BCD,而且还不分顺画或逆画,这样子就算外形看是一个封闭的曲线,但当填充时就会出现意想不到的效果.</p>
<p>以下是计算某一边的信息的函数,通过参数pos来决定要画右边或下边</p>
<div class="source" style="color: #000000; font-family: '[object]','Lucida Console','Courier New','monospace'; background-color: #f9f7ed" jquery1256721283437="14">
<p><span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">function </span><span style="color: #000000">getArcDot</span>(<span style="color: #000000">pos</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">String</span><span style="color: #000000">):</span><span style="font-weight: bold; color: #000080">Object</span><span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">rnd</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Number</span> <span style="color: #000000">=</span> <span style="color: #000000">Math</span><span style="color: #000000">.</span><span style="color: #ff0000">random</span><span style="color: #000000">()&lt;</span><span style="color: #0000ff">0.5</span> <span style="color: #000000">?</span> <span style="color: #0000ff">0</span><span style="color: #000000">:</span><span style="color: #0000ff">1</span><span style="color: #000000">;//</span><span style="color: #0000ff">0</span><span style="color: #a61717; background-color: #e3d2d2">为凸</span><span style="color: #000000">,</span><span style="color: #0000ff">1</span><span style="color: #a61717; background-color: #e3d2d2">为凹</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">dist</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Number</span> <span style="color: #000000">=</span> <span style="color: #000000">Math</span><span style="color: #000000">.</span><span style="color: #ff0000">sqrt</span>(<span style="color: #0000ff">2</span> <span style="color: #000000">*</span> <span style="color: #000000">m_pieceArcRadiu</span> <span style="color: #000000">*</span> <span style="color: #000000">m_pieceArcRadiu</span><span style="color: #000000">);//</span><span style="color: #a61717; background-color: #e3d2d2">圆弧两个商战的距离</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">obj</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Object</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Object</span>();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">switch</span>(<span style="color: #000000">pos</span><span style="color: #000000">){</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">case</span> <span style="color: #0000ff">&quot;right&quot;</span><span style="color: #000000">://</span><span style="color: #a61717; background-color: #e3d2d2">画右边</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">_arcY</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Number</span> <span style="color: #000000">=</span> <span style="color: #000000">m_pieceH</span> <span style="color: #000000">/</span> <span style="color: #0000ff">2</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">_arcX</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Number</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">this</span><span style="color: #000000">.</span><span style="color: #ff0000">m_pieceArcRadiu</span> <span style="color: #000000">*</span> <span style="color: #000000">Math</span><span style="color: #000000">.</span><span style="color: #ff0000">random</span>() <span style="color: #000000">*</span> <span style="color: #000000">Math</span><span style="color: #000000">.</span><span style="color: #ff0000">pow</span><span style="color: #000000">(-</span><span style="color: #0000ff">1</span><span style="color: #000000">,</span><span style="color: #000000">rnd</span>) <span style="color: #000000">+</span> <span style="color: #000000">m_pieceW</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">_angle</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Number</span> <span style="color: #000000">=</span> <span style="color: #0000ff">225</span> <span style="color: #000000">-</span> <span style="color: #000000">rnd</span> <span style="color: #000000">*</span> <span style="color: #0000ff">180</span><span style="color: #000000">;//</span><span style="color: #a61717; background-color: #e3d2d2">开始角度</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #008800; font-style: italic">//画圆弧的起笔位置,顺时针画,凸时,起点在下,凹时起点在上.</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">nStartX</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Number</span> <span style="color: #000000">=</span> <span style="color: #000000">_arcX</span> <span style="color: #000000">+</span> <span style="color: #000000">Math</span><span style="color: #000000">.</span><span style="color: #ff0000">cos</span>(<span style="color: #000000">_angle</span><span style="color: #000000">*</span> <span style="color: #000000">Math</span><span style="color: #000000">.</span><span style="color: #ff0000">PI</span> <span style="color: #000000">/</span> <span style="color: #0000ff">180</span>) <span style="color: #000000">*</span> <span style="color: #000000">m_pieceArcRadiu</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">nStartY</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Number</span> <span style="color: #000000">=</span> <span style="color: #000000">_arcY</span> <span style="color: #000000">+</span> <span style="color: #000000">Math</span><span style="color: #000000">.</span><span style="color: #ff0000">sin</span>(<span style="color: #000000">_angle</span><span style="color: #000000">*</span> <span style="color: #000000">Math</span><span style="color: #000000">.</span><span style="color: #ff0000">PI</span> <span style="color: #000000">/</span> <span style="color: #0000ff">180</span>) <span style="color: #000000">*</span> <span style="color: #000000">m_pieceArcRadiu</span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">obj</span><span style="color: #000000">.</span><span style="color: #ff0000">o</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Point</span>(<span style="color: #000000">_arcX</span><span style="color: #000000">,</span><span style="color: #000000">_arcY</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">obj</span><span style="color: #000000">.</span><span style="color: #ff0000">angle</span> <span style="color: #000000">=</span> <span style="color: #000000">_angle</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">if</span>(<span style="color: #000000">rnd</span> <span style="color: #000000">==</span> <span style="color: #0000ff">0</span><span style="color: #000000">){</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">obj</span><span style="color: #000000">.</span><span style="color: #ff0000">p1</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Point</span>(<span style="color: #000000">nStartX</span><span style="color: #000000">,</span><span style="color: #000000">nStartY</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">obj</span><span style="color: #000000">.</span><span style="color: #ff0000">p2</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Point</span>(<span style="color: #000000">nStartX</span><span style="color: #000000">,</span><span style="color: #000000">nStartY</span> <span style="color: #000000">+</span> <span style="color: #000000">dist</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">obj</span><span style="color: #000000">.</span><span style="color: #ff0000">clockwise</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">true</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">else</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">obj</span><span style="color: #000000">.</span><span style="color: #ff0000">p2</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Point</span>(<span style="color: #000000">nStartX</span><span style="color: #000000">,</span><span style="color: #000000">nStartY</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">obj</span><span style="color: #000000">.</span><span style="color: #ff0000">p1</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Point</span>(<span style="color: #000000">nStartX</span><span style="color: #000000">,</span><span style="color: #000000">nStartY</span> <span style="color: #000000">-</span> <span style="color: #000000">dist</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">obj</span><span style="color: #000000">.</span><span style="color: #ff0000">clockwise</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">false</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">break</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">case</span> <span style="color: #0000ff">&quot;down&quot;</span><span style="color: #000000">:</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">_arcX</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Number</span> <span style="color: #000000">=</span> <span style="color: #000000">m_pieceW</span> <span style="color: #000000">/</span> <span style="color: #0000ff">2</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">_arcY</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Number</span> <span style="color: #000000">=</span> <span style="color: #000000">m_pieceArcRadiu</span> <span style="color: #000000">*</span> <span style="color: #000000">Math</span><span style="color: #000000">.</span><span style="color: #ff0000">random</span>() <span style="color: #000000">*</span> <span style="color: #000000">Math</span><span style="color: #000000">.</span><span style="color: #ff0000">pow</span><span style="color: #000000">(-</span><span style="color: #0000ff">1</span><span style="color: #000000">,</span><span style="color: #000000">rnd</span>) <span style="color: #000000">+</span> <span style="color: #000000">m_pieceH</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">_angle</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Number</span> <span style="color: #000000">=</span> <span style="color: #0000ff">315</span> <span style="color: #000000">-</span> <span style="color: #000000">rnd</span> <span style="color: #000000">*</span> <span style="color: #0000ff">180</span>; <span style="color: #008800; font-style: italic">//开始角度</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #008800; font-style: italic">//画圆弧的起笔位置,顺时针画,凸时,起点在下,凹时起点在上.</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">nStartX</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Number</span> <span style="color: #000000">=</span> <span style="color: #000000">_arcX</span> <span style="color: #000000">+</span> <span style="color: #000000">Math</span><span style="color: #000000">.</span><span style="color: #ff0000">cos</span>(<span style="color: #000000">_angle</span><span style="color: #000000">*</span> <span style="color: #000000">Math</span><span style="color: #000000">.</span><span style="color: #ff0000">PI</span> <span style="color: #000000">/</span> <span style="color: #0000ff">180</span>) <span style="color: #000000">*</span> <span style="color: #000000">m_pieceArcRadiu</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">nStartY</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Number</span> <span style="color: #000000">=</span> <span style="color: #000000">_arcY</span> <span style="color: #000000">+</span> <span style="color: #000000">Math</span><span style="color: #000000">.</span><span style="color: #ff0000">sin</span>(<span style="color: #000000">_angle</span><span style="color: #000000">*</span> <span style="color: #000000">Math</span><span style="color: #000000">.</span><span style="color: #ff0000">PI</span> <span style="color: #000000">/</span> <span style="color: #0000ff">180</span>) <span style="color: #000000">*</span> <span style="color: #000000">m_pieceArcRadiu</span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">obj</span><span style="color: #000000">.</span><span style="color: #ff0000">o</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Point</span>(<span style="color: #000000">_arcX</span><span style="color: #000000">,</span><span style="color: #000000">_arcY</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">obj</span><span style="color: #000000">.</span><span style="color: #ff0000">angle</span> <span style="color: #000000">=</span> <span style="color: #000000">_angle</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">if</span>(<span style="color: #000000">rnd</span> <span style="color: #000000">==</span> <span style="color: #0000ff">0</span><span style="color: #000000">){</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">obj</span><span style="color: #000000">.</span><span style="color: #ff0000">p1</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Point</span>(<span style="color: #000000">nStartX</span><span style="color: #000000">,</span><span style="color: #000000">nStartY</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">obj</span><span style="color: #000000">.</span><span style="color: #ff0000">p2</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Point</span>(<span style="color: #000000">nStartX</span> <span style="color: #000000">-</span> <span style="color: #000000">dist</span><span style="color: #000000">,</span><span style="color: #000000">nStartY</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">obj</span><span style="color: #000000">.</span><span style="color: #ff0000">clockwise</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">true</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">else</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">obj</span><span style="color: #000000">.</span><span style="color: #ff0000">p2</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Point</span>(<span style="color: #000000">nStartX</span><span style="color: #000000">,</span><span style="color: #000000">nStartY</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">obj</span><span style="color: #000000">.</span><span style="color: #ff0000">p1</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Point</span>(<span style="color: #000000">nStartX</span> <span style="color: #000000">+</span> <span style="color: #000000">dist</span><span style="color: #000000">,</span><span style="color: #000000">nStartY</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">obj</span><span style="color: #000000">.</span><span style="color: #ff0000">clockwise</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">false</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">break</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">return</span> <span style="color: #000000">obj</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span></p>
<p>其中的object的结构为:</p>
<p>o 圆心坐标<br />
angle 圆弧的开始角度<br />
p1 圆弧的第一个端点<br />
p2 圆弧的第二个端点<br />
clockwise 画圆弧时是顺时针画还是逆时针画</p>
<p>接着我们来创建一个碎片类Piece:</p>
<div class="source" style="color: #000000; font-family: '[object]','Lucida Console','Courier New','monospace'; background-color: #f9f7ed" jquery1256721507593="14">
<p><span style="font-weight: bold; color: #000080">package</span> <span style="color: #000000">net.conanlwl</span><br />
<span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">import</span> <span style="color: #000000">flash.display.Sprite</span>;<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">class</span> <span style="color: #000000">Piece</span> <span style="font-weight: bold; color: #000080">extends</span> <span style="color: #000000">Sprite</span><br />
&nbsp;&nbsp;&nbsp; <span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">private</span> <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">m_row</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">uint</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">private</span> <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">m_col</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">uint</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">Up</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Object</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">Right</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Object</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">Buttom</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Object</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">Left</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Object</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">private</span> <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">m_virtualX</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Number</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">private</span> <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">m_virtualY</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Number</span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">function </span><span style="color: #000000">Piece</span>(<span style="color: #000000">_row</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">uint</span><span style="color: #000000">,</span><span style="color: #000000">_col</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">uint</span><span style="color: #000000">,</span><span style="color: #000000">_virtualX</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Number</span><span style="color: #000000">,</span><span style="color: #000000">_virtualY</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Number</span>)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">this</span><span style="color: #000000">.</span><span style="color: #ff0000">m_row</span> <span style="color: #000000">=</span> <span style="color: #000000">_row</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">this</span><span style="color: #000000">.</span><span style="color: #ff0000">m_col</span> <span style="color: #000000">=</span> <span style="color: #000000">_col</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">m_virtualX</span> <span style="color: #000000">=</span> <span style="color: #000000">_virtualX</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">m_virtualY</span> <span style="color: #000000">=</span> <span style="color: #000000">_virtualY</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">function</span> <span style="font-weight: bold; color: #000080">get</span> <span style="color: #000000">virtualX</span><span style="color: #000000">():</span><span style="color: #000000">Number</span><span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">return</span> <span style="color: #000000">m_virtualX</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">function</span> <span style="font-weight: bold; color: #000080">get</span> <span style="color: #000000">virtualY</span><span style="color: #000000">():</span><span style="color: #000000">Number</span><span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">return</span> <span style="color: #000000">m_virtualY</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">function</span> <span style="font-weight: bold; color: #000080">get</span> <span style="color: #000000">Row</span><span style="color: #000000">():</span><span style="color: #000000">uint</span><span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">return</span> <span style="color: #000000">m_row</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">function</span> <span style="font-weight: bold; color: #000080">get</span> <span style="color: #000000">Col</span><span style="color: #000000">():</span><span style="color: #000000">uint</span><span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">return</span> <span style="color: #000000">m_col</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
<span style="color: #000000">}</span></p>
<p>其中Up,Right,Buttom,Left为四边的圆弧信息,Row与Col为碎片在整张拼图中的所在行与列.virtualX与virtualY则为碎片在整张拼图正确位置时的坐标.</p>
<p>最后,我们再把各边的点弧信息集合起来</p>
<p><span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">function </span><span style="color: #000000">getAllDotArray</span>(<span style="color: #000000">_p</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Piece</span><span style="color: #000000">):</span><span style="font-weight: bold; color: #000080">Array</span><span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">allDotArray</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Array</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Array</span>();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">obj</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Object</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Object</span>();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">if</span>(<span style="color: #000000">_p</span><span style="color: #000000">.</span><span style="color: #ff0000">Row</span> <span style="color: #000000">==</span> <span style="color: #0000ff">0</span><span style="color: #000000">){//</span><span style="color: #a61717; background-color: #e3d2d2">第</span><span style="color: #0000ff">0</span><span style="color: #a61717; background-color: #e3d2d2">行</span><span style="color: #000000">,</span><span style="color: #a61717; background-color: #e3d2d2">不用画上面</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">_p</span><span style="color: #000000">.</span><span style="color: #ff0000">Up</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">null</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><span style="font-weight: bold; color: #000080">else</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">tempObj</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Object</span> <span style="color: #000000">=</span> (<span style="color: #000000">m_pieceLayer</span><span style="color: #000000">.</span><span style="color: #ff0000">getChildByName</span>(<span style="color: #0000ff">&quot;piece_&quot;</span> <span style="color: #000000">+</span> ((<span style="color: #000000">_p</span><span style="color: #000000">.</span><span style="color: #ff0000">Row</span><span style="color: #000000">-</span><span style="color: #0000ff">1</span><span style="color: #000000">)*</span><span style="color: #000000">m_col</span> <span style="color: #000000">+</span> <span style="color: #000000">_p</span><span style="color: #000000">.</span><span style="color: #ff0000">Col</span>)) <span style="font-weight: bold; color: #000080">as</span> <span style="color: #000000">Piece</span><span style="color: #000000">).</span><span style="color: #000000">Buttom</span><span style="color: #000000">;//</span><span style="color: #a61717; background-color: #e3d2d2">上一行同一位置的方块</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">upObj</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Object</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Object</span>();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">t</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Point</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Point</span>(<span style="color: #000000">tempObj</span><span style="color: #000000">.</span><span style="color: #ff0000">o</span><span style="color: #000000">.</span><span style="color: #ff0000">x</span><span style="color: #000000">,</span><span style="color: #000000">tempObj</span><span style="color: #000000">.</span><span style="color: #ff0000">o</span><span style="color: #000000">.</span><span style="color: #ff0000">y</span> <span style="color: #000000">-</span> <span style="color: #000000">m_pieceH</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">upObj</span><span style="color: #000000">.</span><span style="color: #ff0000">o</span> <span style="color: #000000">=</span> <span style="color: #000000">t</span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">upObj</span><span style="color: #000000">.</span><span style="color: #ff0000">angle</span> <span style="color: #000000">=</span> <span style="color: #000000">tempObj</span><span style="color: #000000">.</span><span style="color: #ff0000">angle</span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">t</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Point</span>(<span style="color: #000000">tempObj</span><span style="color: #000000">.</span><span style="color: #ff0000">p2</span><span style="color: #000000">.</span><span style="color: #ff0000">x</span><span style="color: #000000">,</span><span style="color: #000000">tempObj</span><span style="color: #000000">.</span><span style="color: #ff0000">p2</span><span style="color: #000000">.</span><span style="color: #ff0000">y</span> <span style="color: #000000">-</span> <span style="color: #000000">m_pieceH</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">upObj</span><span style="color: #000000">.</span><span style="color: #ff0000">p1</span> <span style="color: #000000">=</span> <span style="color: #000000">t</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">t</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Point</span>(<span style="color: #000000">tempObj</span><span style="color: #000000">.</span><span style="color: #ff0000">p1</span><span style="color: #000000">.</span><span style="color: #ff0000">x</span><span style="color: #000000">,</span><span style="color: #000000">tempObj</span><span style="color: #000000">.</span><span style="color: #ff0000">p1</span><span style="color: #000000">.</span><span style="color: #ff0000">y</span> <span style="color: #000000">-</span> <span style="color: #000000">m_pieceH</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">upObj</span><span style="color: #000000">.</span><span style="color: #ff0000">p2</span> <span style="color: #000000">=</span> <span style="color: #000000">t</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">upObj</span><span style="color: #000000">.</span><span style="color: #ff0000">clockwise</span> <span style="color: #000000">=</span> <span style="color: #000000">!</span><span style="color: #000000">tempObj</span><span style="color: #000000">.</span><span style="color: #ff0000">clockwise</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">_p</span><span style="color: #000000">.</span><span style="color: #ff0000">Up</span> <span style="color: #000000">=</span> <span style="color: #000000">upObj</span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">if</span>(<span style="color: #000000">_p</span><span style="color: #000000">.</span><span style="color: #ff0000">Col</span> <span style="color: #000000">==</span> <span style="color: #0000ff">0</span><span style="color: #000000">){//</span><span style="color: #a61717; background-color: #e3d2d2">第</span><span style="color: #0000ff">0</span><span style="color: #a61717; background-color: #e3d2d2">列</span><span style="color: #000000">,</span><span style="color: #a61717; background-color: #e3d2d2">不用画左面</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">_p</span><span style="color: #000000">.</span><span style="color: #ff0000">Left</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">null</span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><span style="font-weight: bold; color: #000080">else</span><span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">tempObj</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Object</span> <span style="color: #000000">=</span> (<span style="color: #000000">m_pieceLayer</span><span style="color: #000000">.</span><span style="color: #ff0000">getChildByName</span>(<span style="color: #0000ff">&quot;piece_&quot;</span> <span style="color: #000000">+</span> (<span style="color: #000000">_p</span><span style="color: #000000">.</span><span style="color: #ff0000">Row</span><span style="color: #000000">*</span><span style="color: #000000">m_col</span><span style="color: #000000">+</span><span style="color: #000000">_p</span><span style="color: #000000">.</span><span style="color: #ff0000">Col</span><span style="color: #000000">-</span><span style="color: #0000ff">1</span>)) <span style="font-weight: bold; color: #000080">as</span> <span style="color: #000000">Piece</span><span style="color: #000000">).</span><span style="color: #000000">Right</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">leftObj</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Object</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Object</span>();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">t</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Point</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Point</span>(<span style="color: #000000">tempObj</span><span style="color: #000000">.</span><span style="color: #ff0000">o</span><span style="color: #000000">.</span><span style="color: #ff0000">x</span> <span style="color: #000000">-</span> <span style="color: #000000">m_pieceW</span><span style="color: #000000">,</span><span style="color: #000000">tempObj</span><span style="color: #000000">.</span><span style="color: #ff0000">o</span><span style="color: #000000">.</span><span style="color: #ff0000">y</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">leftObj</span><span style="color: #000000">.</span><span style="color: #ff0000">o</span> <span style="color: #000000">=</span> <span style="color: #000000">t</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">leftObj</span><span style="color: #000000">.</span><span style="color: #ff0000">angle</span> <span style="color: #000000">=</span> <span style="color: #000000">tempObj</span><span style="color: #000000">.</span><span style="color: #ff0000">angle</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">t</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Point</span>(<span style="color: #000000">tempObj</span><span style="color: #000000">.</span><span style="color: #ff0000">p2</span><span style="color: #000000">.</span><span style="color: #ff0000">x</span> <span style="color: #000000">-</span> <span style="color: #000000">m_pieceW</span><span style="color: #000000">,</span><span style="color: #000000">tempObj</span><span style="color: #000000">.</span><span style="color: #ff0000">p2</span><span style="color: #000000">.</span><span style="color: #ff0000">y</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">leftObj</span><span style="color: #000000">.</span><span style="color: #ff0000">p1</span> <span style="color: #000000">=</span> <span style="color: #000000">t</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">t</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Point</span>(<span style="color: #000000">tempObj</span><span style="color: #000000">.</span><span style="color: #ff0000">p1</span><span style="color: #000000">.</span><span style="color: #ff0000">x</span> <span style="color: #000000">-</span> <span style="color: #000000">m_pieceW</span><span style="color: #000000">,</span><span style="color: #000000">tempObj</span><span style="color: #000000">.</span><span style="color: #ff0000">p1</span><span style="color: #000000">.</span><span style="color: #ff0000">y</span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">leftObj</span><span style="color: #000000">.</span><span style="color: #ff0000">p2</span> <span style="color: #000000">=</span> <span style="color: #000000">t</span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">leftObj</span><span style="color: #000000">.</span><span style="color: #ff0000">clockwise</span> <span style="color: #000000">=</span> <span style="color: #000000">!</span><span style="color: #000000">tempObj</span><span style="color: #000000">.</span><span style="color: #ff0000">clockwise</span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">_p</span><span style="color: #000000">.</span><span style="color: #ff0000">Left</span> <span style="color: #000000">=</span> <span style="color: #000000">leftObj</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">if</span>(<span style="color: #000000">_p</span><span style="color: #000000">.</span><span style="color: #ff0000">Row</span> <span style="color: #000000">==</span> <span style="color: #000000">m_row</span> <span style="color: #000000">-</span> <span style="color: #0000ff">1</span><span style="color: #000000">){//</span><span style="color: #a61717; background-color: #e3d2d2">最下一行</span><span style="color: #000000">,</span><span style="color: #a61717; background-color: #e3d2d2">不用画下面</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">_p</span><span style="color: #000000">.</span><span style="color: #ff0000">Buttom</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">null</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><span style="font-weight: bold; color: #000080">else</span><span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">_p</span><span style="color: #000000">.</span><span style="color: #ff0000">Buttom</span> <span style="color: #000000">=</span> <span style="color: #000000">getArcDot</span>(<span style="color: #0000ff">&quot;down&quot;</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">if</span>(<span style="color: #000000">_p</span><span style="color: #000000">.</span><span style="color: #ff0000">Col</span> <span style="color: #000000">==</span> <span style="color: #000000">m_col</span> <span style="color: #000000">-</span> <span style="color: #0000ff">1</span><span style="color: #000000">){//</span><span style="color: #a61717; background-color: #e3d2d2">最右一列</span><span style="color: #000000">,</span><span style="color: #a61717; background-color: #e3d2d2">不用画右面</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">_p</span><span style="color: #000000">.</span><span style="color: #ff0000">Right</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">null</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><span style="font-weight: bold; color: #000080">else</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">_p</span><span style="color: #000000">.</span><span style="color: #ff0000">Right</span> <span style="color: #000000">=</span> <span style="color: #000000">getArcDot</span>(<span style="color: #0000ff">&quot;right&quot;</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">allDotArray</span><span style="color: #000000">.</span><span style="color: #ff0000">push</span>(<span style="color: #000000">_p</span><span style="color: #000000">.</span><span style="color: #ff0000">Up</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">allDotArray</span><span style="color: #000000">.</span><span style="color: #ff0000">push</span>(<span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Point</span>(<span style="color: #000000">m_pieceW</span><span style="color: #000000">,</span><span style="color: #0000ff">0</span>));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">allDotArray</span><span style="color: #000000">.</span><span style="color: #ff0000">push</span>(<span style="color: #000000">_p</span><span style="color: #000000">.</span><span style="color: #ff0000">Right</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">allDotArray</span><span style="color: #000000">.</span><span style="color: #ff0000">push</span>(<span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Point</span>(<span style="color: #000000">m_pieceW</span><span style="color: #000000">,</span><span style="color: #000000">m_pieceH</span>));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">allDotArray</span><span style="color: #000000">.</span><span style="color: #ff0000">push</span>(<span style="color: #000000">_p</span><span style="color: #000000">.</span><span style="color: #ff0000">Buttom</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">allDotArray</span><span style="color: #000000">.</span><span style="color: #ff0000">push</span>(<span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Point</span>(<span style="color: #0000ff">0</span><span style="color: #000000">,</span><span style="color: #000000">m_pieceH</span>));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">allDotArray</span><span style="color: #000000">.</span><span style="color: #ff0000">push</span>(<span style="color: #000000">_p</span><span style="color: #000000">.</span><span style="color: #ff0000">Left</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">allDotArray</span><span style="color: #000000">.</span><span style="color: #ff0000">push</span>(<span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Point</span>(<span style="color: #0000ff">0</span><span style="color: #000000">,</span><span style="color: #0000ff">0</span>));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">return</span> <span style="color: #000000">allDotArray</span>;<br />
&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span></p>
<p>有了各边的点弧信息,只要使用连线函数就可以画出一个封闭的曲线了.</p>
<div class="source" style="color: #000000; font-family: '[object]','Lucida Console','Courier New','monospace'; background-color: #f9f7ed" jquery1256723657828="14">
<p><span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">function </span><span style="color: #000000">drawPiece</span>(p<span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Piece</span><span style="color: #000000">,</span><span style="color: #000000">dotArray</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Array</span><span style="color: #000000">):</span><span style="font-weight: bold; color: #000080">void</span><span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">pen</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Pen</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Pen</span>(p<span style="color: #000000">.</span><span style="color: #ff0000">graphics</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">pen</span><span style="color: #000000">.</span><span style="color: #ff0000">lineStyle</span>(<span style="color: #0000ff">1</span><span style="color: #000000">,</span><span style="color: #0000ff">0</span><span style="color: #000000">,</span><span style="color: #0000ff">0.4</span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">pen</span><span style="color: #000000">.</span><span style="color: #ff0000">moveTo</span>(<span style="color: #0000ff">0</span><span style="color: #000000">,</span><span style="color: #0000ff">0</span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">for</span>(<span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">i</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">uint</span><span style="color: #000000">=</span><span style="color: #0000ff">0</span>;<span style="color: #000000">i</span><span style="color: #000000">&lt;</span><span style="color: #000000">dotArray</span><span style="color: #000000">.</span><span style="color: #ff0000">length</span>;<span style="color: #000000">i</span><span style="color: #000000">++){</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">if</span>(<span style="color: #000000">dotArray</span><span style="color: #000000">[</span><span style="color: #000000">i</span><span style="color: #000000">]</span> <span style="font-weight: bold; color: #000080">is</span> <span style="color: #000000">Point</span><span style="color: #000000">){</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">pen</span><span style="color: #000000">.</span><span style="color: #ff0000">lineTo</span>(<span style="color: #000000">dotArray</span><span style="color: #000000">[</span><span style="color: #000000">i</span><span style="color: #000000">].</span><span style="color: #000000">x</span><span style="color: #000000">,</span><span style="color: #000000">dotArray</span><span style="color: #000000">[</span><span style="color: #000000">i</span><span style="color: #000000">].</span><span style="color: #000000">y</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">else</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">if</span>(<span style="color: #000000">dotArray</span><span style="color: #000000">[</span><span style="color: #000000">i</span><span style="color: #000000">]!=</span><span style="font-weight: bold; color: #000080">null</span><span style="color: #000000">){</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">pen</span><span style="color: #000000">.</span><span style="color: #ff0000">lineTo</span>(<span style="color: #000000">dotArray</span><span style="color: #000000">[</span><span style="color: #000000">i</span><span style="color: #000000">].</span><span style="color: #000000">p1</span><span style="color: #000000">.</span><span style="color: #ff0000">x</span><span style="color: #000000">,</span><span style="color: #000000">dotArray</span><span style="color: #000000">[</span><span style="color: #000000">i</span><span style="color: #000000">].</span><span style="color: #000000">p1</span><span style="color: #000000">.</span><span style="color: #ff0000">y</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">pen</span><span style="color: #000000">.</span><span style="color: #ff0000">drawArc1</span>(<span style="color: #000000">dotArray</span><span style="color: #000000">[</span><span style="color: #000000">i</span><span style="color: #000000">].</span><span style="color: #000000">o</span><span style="color: #000000">.</span><span style="color: #ff0000">x</span><span style="color: #000000">,</span><span style="color: #000000">dotArray</span><span style="color: #000000">[</span><span style="color: #000000">i</span><span style="color: #000000">].</span><span style="color: #000000">o</span><span style="color: #000000">.</span><span style="color: #ff0000">y</span><span style="color: #000000">,</span><span style="font-weight: bold; color: #000080">this</span><span style="color: #000000">.</span><span style="color: #ff0000">m_pieceArcRadiu</span><span style="color: #000000">,</span><span style="color: #0000ff">270</span><span style="color: #000000">,</span><span style="color: #000000">dotArray</span><span style="color: #000000">[</span><span style="color: #000000">i</span><span style="color: #000000">].</span><span style="color: #000000">angle</span><span style="color: #000000">,</span><span style="font-weight: bold; color: #000080">false</span><span style="color: #000000">,</span><span style="color: #000000">dotArray</span><span style="color: #000000">[</span><span style="color: #000000">i</span><span style="color: #000000">].</span><span style="color: #000000">clockwise</span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span></p>
<p>其中的Pen类是&lt;&lt;ActionScript3 CookBook&gt;&gt;中的一个代理类.可以方便的画一些特殊的线型,如圆弧,星形等.drawArc1是我在drawArc的基础上新添的一个函数.目的是为了可以确定该圆弧是顺时针画出来的,还是逆时针画出来的.</p>
<p>最后,就可以使用循环连画整幅拼图的碎片以及利用位图填充了.</p>
<div class="source" style="color: #000000; font-family: '[object]','Lucida Console','Courier New','monospace'; background-color: #f9f7ed" jquery1256723910531="14">
<p><span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">function </span><span style="color: #000000">pieceCut</span><span style="color: #000000">():</span><span style="font-weight: bold; color: #000080">void</span><span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">for</span>(<span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">i</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">uint</span> <span style="color: #000000">=</span> <span style="color: #0000ff">0</span>; <span style="color: #000000">i</span> <span style="color: #000000">&lt;</span> <span style="color: #000000">m_row</span>;<span style="color: #000000">i</span><span style="color: #000000">++){</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">for</span>(<span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">j</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">uint</span><span style="color: #000000">=</span><span style="color: #0000ff">0</span>;<span style="color: #000000">j</span><span style="color: #000000">&lt;</span> <span style="color: #000000">m_col</span>;<span style="color: #000000">j</span><span style="color: #000000">++){</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> p<span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Piece</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Piece</span>(<span style="color: #000000">i</span><span style="color: #000000">,</span><span style="color: #000000">j</span><span style="color: #000000">,</span><span style="color: #000000">j</span> <span style="color: #000000">*</span> <span style="color: #000000">m_pieceW</span><span style="color: #000000">,</span><span style="color: #000000">i</span> <span style="color: #000000">*</span> <span style="color: #000000">m_pieceH</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p<span style="color: #000000">.</span><span style="color: #ff0000">name</span> <span style="color: #000000">=</span> <span style="color: #0000ff">&quot;piece_&quot;</span> <span style="color: #000000">+</span> (<span style="color: #000000">i</span> <span style="color: #000000">*</span> <span style="color: #000000">m_col</span> <span style="color: #000000">+</span> <span style="color: #000000">j</span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p<span style="color: #000000">.</span><span style="color: #ff0000">graphics</span><span style="color: #000000">.</span><span style="color: #ff0000">beginBitmapFill</span>(<span style="color: #000000">images</span><span style="color: #000000">,</span><span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Matrix</span>(<span style="color: #0000ff">1</span><span style="color: #000000">,</span><span style="color: #0000ff">0</span><span style="color: #000000">,</span><span style="color: #0000ff">0</span><span style="color: #000000">,</span><span style="color: #0000ff">1</span><span style="color: #000000">,-</span><span style="color: #000000">j</span><span style="color: #000000">*</span><span style="color: #000000">m_pieceW</span><span style="color: #000000">,-</span><span style="color: #000000">i</span><span style="color: #000000">*</span><span style="color: #000000">m_pieceH</span>));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">drawPiece</span>(p<span style="color: #000000">,</span><span style="color: #000000">getAllDotArray</span>(p));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p<span style="color: #000000">.</span><span style="color: #ff0000">graphics</span><span style="color: #000000">.</span><span style="color: #ff0000">endFill</span>();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">m_pieceLayer</span><span style="color: #000000">.</span><span style="color: #ff0000">addChild</span>(p);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p<span style="color: #000000">.</span><span style="color: #ff0000">addEventListener</span>(<span style="color: #000000">MouseEvent</span><span style="color: #000000">.</span><span style="color: #ff0000">MOUSE_DOWN</span><span style="color: #000000">,</span><span style="color: #000000">onMouseDown</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p<span style="color: #000000">.</span><span style="color: #ff0000">addEventListener</span>(<span style="color: #000000">MouseEvent</span><span style="color: #000000">.</span><span style="color: #ff0000">MOUSE_WHEEL</span><span style="color: #000000">,</span><span style="color: #000000">onMouseWheel</span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">setKeyboardFocus</span>();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">addEventListener</span>(<span style="color: #000000">KeyboardEvent</span><span style="color: #000000">.</span><span style="color: #ff0000">KEY_DOWN</span><span style="color: #000000">,</span><span style="color: #000000">onKeyDown</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">cutCard</span>();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span></p>
<p>根据矩阵的定义:</p>
<p>Matrix(a:Number = 1, b:Number = 0, c:Number = 0, d:Number = 1, tx:Number = 0, ty:Number = 0)</p>
<p>我们只要在位图填充beginBitmapFill时,对原图进行位移,便能填充到正确的图案到每一个碎片之中去.</p>
<p>最最最后,通过一个洗牌函数,就可以把碎片随机的平铺在游戏舞台中了.</p>
<div class="source" style="color: #000000; font-family: '[object]','Lucida Console','Courier New','monospace'; background-color: #f9f7ed" jquery1256724965062="14"><span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">function </span><span style="color: #000000">cutCard</span><span style="color: #000000">():</span><span style="font-weight: bold; color: #000080">void</span><span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">k</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">uint</span> <span style="color: #000000">=</span> <span style="color: #0000ff">0</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">i</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">uint</span> <span style="color: #000000">=</span> <span style="color: #0000ff">0</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">j</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">uint</span> <span style="color: #000000">=</span> <span style="color: #0000ff">0</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">w</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Number</span> <span style="color: #000000">=</span> <span style="color: #0000ff">800</span> <span style="color: #000000">/</span> <span style="color: #000000">m_col</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">h</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Number</span> <span style="color: #000000">=</span> <span style="color: #0000ff">800</span> <span style="color: #000000">/</span> <span style="color: #000000">m_row</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">m_pieceArray</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Array</span>();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">for</span>(<span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">l</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">uint</span> <span style="color: #000000">=</span> <span style="color: #0000ff">0</span>;<span style="color: #000000">l</span><span style="color: #000000">&lt;</span><span style="color: #000000">m_pieceLayer</span><span style="color: #000000">.</span><span style="color: #ff0000">numChildren</span>;<span style="color: #000000">l</span><span style="color: #000000">++){</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">if</span>((<span style="color: #000000">m_pieceLayer</span><span style="color: #000000">.</span><span style="color: #ff0000">getChildAt</span>(<span style="color: #000000">l</span>) <span style="font-weight: bold; color: #000080">as</span> <span style="color: #000000">Piece</span><span style="color: #000000">).</span><span style="color: #000000">numChildren</span> <span style="color: #000000">==</span> <span style="color: #0000ff">0</span>)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">m_pieceArray</span><span style="color: #000000">.</span><span style="color: #ff0000">push</span>(<span style="color: #000000">m_pieceLayer</span><span style="color: #000000">.</span><span style="color: #ff0000">getChildAt</span>(<span style="color: #000000">l</span>));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">m_pieceArray</span><span style="color: #000000">.</span><span style="color: #ff0000">sort</span>(<span style="color: #000000">Utils</span><span style="color: #000000">.</span><span style="color: #ff0000">arrayRandomSort</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">while</span>(<span style="color: #000000">k</span><span style="color: #000000">&lt;</span><span style="color: #000000">m_pieceArray</span><span style="color: #000000">.</span><span style="color: #ff0000">length</span>)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">{</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> p<span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Piece</span> <span style="color: #000000">=</span> <span style="color: #000000">m_pieceArray</span><span style="color: #000000">[</span><span style="color: #000000">k</span><span style="color: #000000">]</span> <span style="font-weight: bold; color: #000080">as</span> <span style="color: #000000">Piece</span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p<span style="color: #000000">.</span><span style="color: #ff0000">x</span> <span style="color: #000000">=</span> <span style="color: #000000">j</span> <span style="color: #000000">*</span> <span style="color: #000000">w</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p<span style="color: #000000">.</span><span style="color: #ff0000">y</span> <span style="color: #000000">=</span> <span style="color: #000000">i</span> <span style="color: #000000">*</span> <span style="color: #000000">h</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">rnd</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">int</span> <span style="color: #000000">=</span> <span style="color: #0000ff">2</span> <span style="color: #000000">-</span> <span style="color: #000000">Math</span><span style="color: #000000">.</span><span style="color: #ff0000">floor</span>(<span style="color: #0000ff">4</span> <span style="color: #000000">*</span> <span style="color: #000000">Math</span><span style="color: #000000">.</span><span style="color: #ff0000">random</span><span style="color: #000000">());//</span><span style="color: #a61717; background-color: #e3d2d2">随机生成</span> <span style="color: #000000">-</span><span style="color: #0000ff">1</span> <span style="color: #0000ff">0</span> <span style="color: #0000ff">1</span> <span style="color: #0000ff">2</span> <span style="color: #a61717; background-color: #e3d2d2">四个整数</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p<span style="color: #000000">.</span><span style="color: #ff0000">rotation</span> <span style="color: #000000">=</span> <span style="color: #000000">rnd</span> <span style="color: #000000">*</span> <span style="color: #0000ff">90</span>; <span style="color: #008800; font-style: italic">//随机旋转</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">switch</span>(<span style="color: #000000">rnd</span><span style="color: #000000">){</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">case</span> <span style="color: #000000">-</span><span style="color: #0000ff">1</span><span style="color: #000000">:</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p<span style="color: #000000">.</span><span style="color: #ff0000">y</span> <span style="color: #000000">+=</span> <span style="color: #000000">m_pieceH</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">break</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">case</span> <span style="color: #0000ff">0</span><span style="color: #000000">:</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">break</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">case</span> <span style="color: #0000ff">1</span><span style="color: #000000">:</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p<span style="color: #000000">.</span><span style="color: #ff0000">x</span> <span style="color: #000000">+=</span> <span style="color: #000000">m_pieceW</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">break</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">case</span> <span style="color: #0000ff">2</span><span style="color: #000000">:</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p<span style="color: #000000">.</span><span style="color: #ff0000">x</span> <span style="color: #000000">+=</span> <span style="color: #000000">m_pieceW</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p<span style="color: #000000">.</span><span style="color: #ff0000">y</span> <span style="color: #000000">+=</span> <span style="color: #000000">m_pieceH</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">break</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">j</span><span style="color: #000000">++;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">if</span>(<span style="color: #000000">j</span> <span style="color: #000000">==</span> <span style="color: #000000">m_col</span><span style="color: #000000">){</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">j</span><span style="color: #000000">=</span><span style="color: #0000ff">0</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">i</span><span style="color: #000000">++;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">if</span>( <span style="color: #000000">i</span> <span style="color: #000000">==</span> <span style="color: #000000">m_row</span>)<span style="color: #000000">i</span><span style="color: #000000">==</span><span style="color: #0000ff">0</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">k</span><span style="color: #000000">++;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span>&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span></div>
</div>
</div>
</div>
</div>]]></description><wfw:commentRss><![CDATA[http://www.conanlwl.net/Feed/Comment/181.aspx]]></wfw:commentRss></item><item><title><![CDATA[《机械迷城》(Machinarium) 绿色硬盘版 下载]]></title><link><![CDATA[http://www.conanlwl.net/2009/10/21/ji+xie+mi+cheng+Machinarium+lv+se+ying+pan+ban+xia+zai.aspx]]></link><category><![CDATA[Game]]></category><author><![CDATA[Conanlwl]]></author><pubDate>Wed, 21 Oct 2009 09:45:48 GMT</pubDate><description><![CDATA[<p>游戏类型：解谜游戏</p>
<p>&nbsp;<img alt="" src="/UserFiles/200910/2109555410.jpg" /></p>
<p>由捷克独立开发小组Amanita Design设计制作的最新作品《Machinarium》PC版发售日定于09年10月16日。此作堪称以独特的水墨风格展现给玩家的是一款冒险解谜游戏，值得期待。</p>
<p>游戏将采用传统点击式界面,和Samorost游戏相似,2D背景和人物,没有对白.不过,Machinarium游戏时间将更长更复杂,这次画面将由手画,而玩家有个小物品栏。</p>
<p>Machinarium中每个人都是机器人,包括我们的小英雄,他将对从 &quot;Black Cap Brotherhood&quot;来的坏人。</p>
<p>本游戏在2009年独立游戏节上斩获了视觉艺术奖。</p>
<p>刚在网上玩了在线版的试玩DEMO <a href="http://machinarium.net/demo/">http://machinarium.net/demo/</a>,三关后,就说要玩后续就得交钱..囊中羞涩....就把它关了...然后就在网上找到了一个绿色硬盘版的下载地址......</p>
<p>绿色版下载: <a href="http://download.chnren.com/SoftView.Asp?SoftID=8359">http://download.chnren.com/SoftView.Asp?SoftID=8359</a></p>
<p>一开始的那种气氛,就好像电影的&lt;机器人总动员&gt;那样的荒凉..然后就是一个破旧的机器人..然后就产生了瓦力和伊娃的动人故事了.............</p>
<p><img alt="" src="/UserFiles/200910/2109561382.jpg" /></p>
<p><img alt="" src="/UserFiles/200910/2109562345.jpg" /></p>
<p><img alt="" src="/UserFiles/200910/2109562876.jpg" /></p>
<p><img alt="" src="/UserFiles/200910/2109563442.jpg" /></p>]]></description><wfw:commentRss><![CDATA[http://www.conanlwl.net/Feed/Comment/180.aspx]]></wfw:commentRss></item><item><title><![CDATA[AS3编写凹凸拼图游戏(能够智能吸附)]]></title><link><![CDATA[http://www.conanlwl.net/2009/10/19/AS3+bian+xie+ao+tu+pin+tu+you+xii.aspx]]></link><category><![CDATA[ActionScript3]]></category><author><![CDATA[Conanlwl]]></author><pubDate>Mon, 19 Oct 2009 23:43:02 GMT</pubDate><description><![CDATA[<p>花了几天的时间,终于完成了这个拼图游戏.当两张相邻的拼图拼并正确的时候.程序和自动地将其吸附..另.可使用鼠标的滚轮在拼图上滚动以旋转拼图,增加了游戏的难度.</p>
<p>游戏源码过段时间整理完成再说吧...报了个驾校,要考法规了.<img alt="" src="/FCKeditor/editor/images/smiley/onion/05.gif" /></p>
<p><embed src="http://www.conanlwl.net/demo/puzzle/puzzle.swf" width="600" height="450" scale="ShowAll" play="true" loop="true" menu="true" wmode="Window" quality="1" type="application/x-shockwave-flash"></embed></p>
<p><a target="_blank" href="http://www.conanlwl.net/demo/puzzle/puzzle.swf"><font color="#ff0000" size="5"><strong>[全屏试玩]</strong></font></a></p>
<p><strong><font color="#800000" size="4">多添加了在拼图上按键盘空格键即可旋转拼图的功能(10.27)</font></strong></p>
<p><strong><font color="#800000" size="4"><a target="_blank" href="http://www.conanlwl.net/2009/10/28/pin+tu+she+ji+si+lu+yu+yuan+ma+yi+hua+tu+pian.aspx">游戏设计思路与源码(10.28)</a></font></strong></p>]]></description><wfw:commentRss><![CDATA[http://www.conanlwl.net/Feed/Comment/179.aspx]]></wfw:commentRss></item><item><title><![CDATA[[Mark][转]在Flash中嵌入元数据标签]]></title><link><![CDATA[http://www.conanlwl.net/2009/10/19/Mark+zhuan+zai+Flash+zhong+qian+ru+yuan+shu+ju+biao+qian.aspx]]></link><category><![CDATA[ActionScript3]]></category><author><![CDATA[Conanlwl]]></author><pubDate>Mon, 19 Oct 2009 12:50:16 GMT</pubDate><description><![CDATA[<p>这篇文章描述了在Adobe Flash CS4专业版中怎么利用[Embed]元数据标签来嵌入不同类型的媒体、数据和图片资源。文章提供了多个例子关于怎么链接和现实元数据信息，并讨论了在你的工程中加入元数据标签有用的多种原因。</p>
<p>元数据在Flash CS4以前的版本中是不支持的。这对于在Flex中写代码然后尝试在Flash中编译的人会产生一些问题。在Flash CS4中使用元数据标签的主要优势之一就是她简化了Flex-Flex的工作流程。</p>
<h2><span class="mw-headline">基本要求 </span></h2>
<p>为了能够完成这篇文章中的示例，你需要如下软件和文件：</p>
<p>Flash CS4 Professional; Flex 3 SDK</p>
<p>示例文件: <a class="external free" title="http://download.macromedia.com/pub/developer/embed_metadata.zip" target="_blank" rel="nofollow" href="http://download.macromedia.com/pub/developer/embed_metadata.zip">http://download.macromedia.com/pub/developer/embed_metadata.zip</a> (ZIP, 390K)</p>
<h2><span class="mw-headline">关于作者 </span></h2>
<p>Tareq AlJaber是Adobe的一位软件质量工程师，他专注于Flash-Flex工作流程以及编译特性。在进入Adobe之前，他在一个制造工作制作3D动画，为Jordan Television创立了虚拟实验室。Tareq在 Jordan University获得了计算机科学学位，并获得了 Cal State East Bay University的MBA。在他的空闲时间里，Tareq喜欢看和玩足球或者篮球，并很喜欢阅读。他最喜欢的书是Leap of Faith: Memoirs of an Unexpected Life。这是他的博客flashauthoring.blogspot.com。</p>
<p>&nbsp;</p>
<p><a id=".E5.B5.8C.E5.85.A5GIF.2CPNG.2CJPEG.2CMP3.E6.96.87.E4.BB.B6" name=".E5.B5.8C.E5.85.A5GIF.2CPNG.2CJPEG.2CMP3.E6.96.87.E4.BB.B6"></a></p>
<h2><span class="mw-headline">嵌入GIF,PNG,JPEG,MP3文件 </span></h2>
<p>这一部分描述怎么中Flash CS4专业版中利用[Embed]元数据标签嵌入GIF,PNG,JPEG,或者MP3文件。第一个示例来看看嵌入GIF文件的过程。</p>
<p>如果你没有准备好，一定要下载本文章第一页可用的样例文件。跟着提供的例子，解压ZIP文件，然后打开名称为\gif的目录检查示例文件：</p>
<p>1、选择&quot;文件&quot;&gt;&quot;新建&quot;&gt;&quot;Flash文件(ActionScript 3.0)&quot;菜单，创建一个新的Flash CS4文件.</p>
<p>2、保存这个Flash文件为GIFEmbed.fla.</p>
<p>3、选择&quot;文件&quot;&gt;&quot;新建&quot;&gt;&quot;ActionScript文件&quot;，来创建一个新的ActionScript文件.</p>
<p>4、保存ActionScript文件为GIFEmbed.as.</p>
<p>5、当GIFEmbed.as是活动标签，拷贝并粘贴如下代码到脚本窗口：</p>
<pre>package
{
   import flash.display.*;
   public class GIFEmbed extends Sprite 
   {
       <strong>[Embed(source = &quot;../assets/talapetra.gif&quot;)]</strong>
       private var theClass:Class;
       public function GIFEmbed () 
       {
           var displayObj:DisplayObject = new theClass(); 
           addChild (displayObj); 
       }
   }
}</pre>
<p>代码中的高亮行包括了源属性，指示了嵌入的名称和资源的路径。你可以使用绝对路径或者文档文件的相对路径来包含嵌入的描述。在这个示例中，这个名称为GIFEmbed.as的ActionScript类指示了定位到命名为\assets的文件夹中，这个文件夹包含了talapetra.gif的图片文件。</p>
<p><em>注意：[Embed]元数据标签可以有另外一个可选属性，mimeType，它允许你指定链接资源的MIME类型。我将在后面再具体的讨论这个属性。</em></p>
<p>ActionScript代码的顺序非常重要。你必须在声明变量前添加[Embed]元数据标签，而且这个变量的类型会是Class。在下面的代码片段中，[Embed]元数据标签中一个成为theClass，类型声明为Class的私有变量前使用：</p>
<pre>[Embed(source = &quot;../assets/talapetra.gif&quot;)]  
   private var theClass:Class;</pre>
<p>在名称为GIFEmbed的函数内部，一个新的类型为DisplayObject命名为displayObj的变量被用来实例化theClass为一个新的DisplayObject。下一行使用addChild方法将displayObj添加到了显示列表当中，并在舞台上渲染：</p>
<pre>var displayObj:DisplayObject = new theClass(); 
    addChild (displayObj);</pre>
<p>参考示例文件，查看文件夹结构，确认GIFEmbed.as类文件和名称为 talapetra.gif的GIP图片的路径(放在assets目录中)。</p>
<p>6、做了这些改变之后，保存GIFEmbed.as 。</p>
<p>7、点击相应的标签打开 GIFEmbed.fla文件。点击舞台，在属性面板中查看发布属性。</p>
<p>8、在文档类输入框中输入类名，将类作为文档类与Flash文件关联。在这个示例中，输入你创建的类名GIFEmbed(如图1)。</p>
<p>&nbsp;</p>
<p><img alt="" src="/UserFiles/200910/1912521264.jpg" /><br />
图1：在属性面板的文档类框中输入类名</p>
<p>9、选择&quot;控制&quot;&gt;&quot;测试影片&quot;来测试影片。</p>
<p>一个错误信息会出现，因为项目尝试用了一个在Flash CS4中的特性，这需要一些额外的Flex类。Flash检测了缺少的Flex类，并显示如图2的信息。</p>
<p><img alt="" src="/UserFiles/200910/1912524100.jpg" /><br />
图2：Flex SDK需求信息窗口</p>
<p>在这个对话框中，你有一个选项可以将路径指向Flex SDK，但是这并不是必须浏览指向的，因为路径已经设置了。你需要做的是，点击&quot;更新库路径&quot;按钮来确保flex.swf的正确路径($(FlexSDK)/frameworks/libs/flex.swf)自动地添加到当前FLAS文件的库路径中。</p>
<p><em>注意：在第一次运行SWF文件之后，Flex SDK需求窗口不会再出现。取而代之，你会看到编译错误，看成是缺失类(如图3)。</em></p>
<p><img alt="" src="/UserFiles/200910/1912532310.jpg" /><br />
图3：随后尝试运行SWF时编译错误结果</p>
<p>10、点击&quot;更新库路径&quot;按钮将flex.swf文件从Flex SKD添加到FLA文件的库路径。</p>
<p>11、根据如下步骤，你会看到会发生什么：</p>
<pre>1、选择&quot;文件&quot;&gt;&quot;发布设置&quot;，然后点击Flash标签；
   2、点击脚本下拉菜单后面的设置按钮(如图4)；</pre>
<p><img alt="" src="/UserFiles/200910/1912541003.jpg" /><br />
图4：在Flash标签上，点击设置按钮访问ActionScript的设置</p>
<pre>3、在高级AS3设置窗口中，选择库路径标签。列表包含了Flex SDK目录中的flex.swc的路径(如图5)。</pre>
<p><img alt="" src="/UserFiles/200910/1912543853.jpg" /></p>
<p>12、点击确认按钮关闭AS设置窗口。然后点击确认关闭发布设置对话框。</p>
<p>13、选择&quot;控制&quot;&gt;&quot;测试影片&quot;来再次测试SWF。独立的Flash播放器显示了SWF文件，现在它正确地显示了嵌入GIF文件(如图6)。</p>
<p><img alt="" src="/UserFiles/200910/1912551285.jpg" /><br />
图6：SWF文件显示了嵌入元数据源的数据<br />
&nbsp;&nbsp;&nbsp;</p>
<p>正如我之前提到的，[Embed]元数据标签带有两个属性： Source:(必选的)使用这个属性来确认嵌入资源的名称和路径。如果你嵌入了一个元件，你可以用元件的关键词确定元件认嵌入到SWF中的名字。 mimeType:(可选的)使用这个属性来确定嵌入资源的MIME类型。如果这个属性没有设置，Flash会在源属性中根据导入资源文件的扩展名载入合适的类型。</p>
<p>Flash CS4专业版支持与Flex一样的一系列MIME类型：</p>
<pre>application/x-font 
   application/x-font-truetype 
   application/x-shockwave-flash 
   audio/mpeg 
   image/gif 
   image/jpeg 
   image/png 
   image/svg 
   image/svg-xml</pre>
<p><a id=".E5.9C.A8.E5.B8.A7.E8.84.9A.E6.9C.AC.E4.B8.AD.E4.BD.BF.E7.94.A8.5BEmbed.5D.E6.A0.87.E7.AD.BE" name=".E5.9C.A8.E5.B8.A7.E8.84.9A.E6.9C.AC.E4.B8.AD.E4.BD.BF.E7.94.A8.5BEmbed.5D.E6.A0.87.E7.AD.BE"></a></p>
<h2><span class="mw-headline">在帧脚本中使用[Embed]标签 </span></h2>
<p>同前面列出的过程一样，元数据也可以应用到帧脚本。在这段中，我会描述怎么利用[Embed]标签来嵌入元数据到帧脚本中。如果你跟着示例文件，请参阅&lt;Embed on Frame Script&gt;目录下的文件：</p>
<p>1、通过选择&quot;文件&quot;&gt;&quot;新建&quot;&gt;&quot;Flash文件(ActionScript 3.0)&quot;菜单来创建一个新的Flash CS4文件；</p>
<p>2、将这个Flash文件保存为GIFEmbed.fla。</p>
<p>3、选择图层1的第一帧并打开动作面板(&quot;窗口&quot;&gt;&quot;动作&quot;)。</p>
<p>4、拷贝如下代码，并粘贴到脚本窗口：</p>
<pre>[Embed(source=&quot;../assets/talapetra.gif&quot;)] 
   var theClass:Class;
   var displayObject:DisplayObject = new theClass(); 
   addChild(displayObject);</pre>
<p>5、重复前面一个段落的10-13步测试SWF文件，并更新Flex SDK目录库路径来添加flex.swc文件。</p>
<p>&nbsp;</p>
<p><a id=".E4.BB.8ESWF.E6.96.87.E4.BB.B6.E4.B8.AD.E5.B5.8C.E5.85.A5.E4.B8.80.E4.B8.AA.E5.85.83.E4.BB.B6" name=".E4.BB.8ESWF.E6.96.87.E4.BB.B6.E4.B8.AD.E5.B5.8C.E5.85.A5.E4.B8.80.E4.B8.AA.E5.85.83.E4.BB.B6"></a></p>
<h2><span class="mw-headline">从SWF文件中嵌入一个元件 </span></h2>
<p>在前面的段落中，我写了使用[Embed]标签利用GIF文件嵌入图像的元数据的过程。显示外部数据非常有用，但是当使用[Embed]元数据标签是会有很多可能的情况。这个段落中会描述嵌入整个SWF文件或者一个SWF文件中的一些特殊元件的步骤。</p>
<p>如果你随着下载的示例文件学习，请参阅文件夹中的文件名为&lt;SWF with slice 9&gt;的示例 。按照如下步骤：</p>
<p>1、在Flash CS4中，选择&quot;文件&quot;&gt;&quot;打开&quot;，从示例文件的&lt;SWF with slice 9&gt;目录中选择&quot;Movie.fla&quot;文件。</p>
<p>2、选择&quot;窗口&quot;&gt;&quot;库&quot;，打开库面板(如果它还没有打开的话)。</p>
<p>3、右键(或者苹果机上Control-click)点击库中的&quot;Slice9&quot;元件，从上下文菜单中选择&quot;属性&quot;(如图7)。</p>
<p><img alt="" src="/UserFiles/200910/1912554651.jpg" /><br />
图7：当右键点击库中的&quot;Slice9&quot;元件是出现的菜单中选择&quot;属性&quot;</p>
<p>4、在元件属性对话框中，选择&quot;Export for ActionScript&quot;选项(如果没有被选中的话)，如图8所示。</p>
<p><img alt="" src="/UserFiles/200910/1912561770.jpg" /><br />
图8：在元件属性对话框中检查&quot;Export for ActionScript&quot;选项</p>
<p><em>注意：在这个练习中，也需要确保&quot;Enable Guides for 9-Slice Scaling&quot;选项被选中。</em></p>
<p>5、选择&quot;控制&quot;&gt;&quot;测试影片&quot;来测试FLA文件。</p>
<p>6、关闭独立播放器的movie.swf。也关闭Flash的movie.fla。</p>
<p>7、选择&quot;文件&quot;&gt;&quot;新建&quot;&gt;&quot;Flash文件(ActionScript 3.0)&quot;，命名为SWFEmbed.fla。</p>
<p>8、选择&quot;文件&quot;&gt;&quot;新建&quot;&gt;&quot;ActionScript文件&quot;，命名为SWFEmbed.as。</p>
<p>9、复制并粘贴如下代码到SWFEmbed.as文件的脚本窗口中：</p>
<pre>package
{
   import flash.display.*;
   import flash.events.MouseEvent;
   import flash.geom.Rectangle;
   public class SWFEmbed extends MovieClip 
   {
       public var displayObj:DisplayObject;
       [Embed(source=&quot;Movie.swf&quot;, symbol=&quot;Slice9&quot;)] 
       var theClass:Class;
       public function SWFEmbed()
       {
            displayObj = new theClass(); 
            addChild(displayObj);
            displayObj.x = 200; 
            displayObj.y = 220; 
       }
   }
}</pre>
<p>在这段代码中，[Embed]元数据标签使用了source参数来确认将被嵌入的SWF文件的名称和路径。symbol参数来确认特殊元件的名称，这个元件是从source参数关联的SWF文件中嵌入的。</p>
<p>10、添加了代码之后，保存ActionScript文件为 SWFEmbed.as。</p>
<p>11、点击Flash CS4中其他的标签，激活SWFEmbed.fla标签。在舞台上点击一次，在属性检查中查看发布属性。</p>
<p>12、在文档类区域，输入类名SWFEmbed，链接ActionScript文件到Flash文件。</p>
<p>13、选择&quot;控制&quot;&gt;&quot;测试影片&quot;来在独立播放器中查看SWF。Flex SDK Required对话框出现(如图9)。</p>
<p><img alt="" src="/UserFiles/200910/1912563914.jpg" /><br />
图9：信息表明这个工程需要Flex SDK</p>
<p>14、点击&quot;Update Library Path&quot;按钮，从Flex SDK中添加flex.swc到FLA文件的库路径中。</p>
<p>15、选择&quot;控制&quot;&gt;&quot;测试影片&quot;来再次预览SWF，你会看到元件显示在SWFEmbed.swf文件中(如图10)。</p>
<p><img alt="" src="/UserFiles/200910/1912570675.jpg" /><br />
图10：在SWFEmbed.swf中显示元件元数据 <a id=".E4.BD.BF.E7.94.A8.5BEmbed.5D.E6.A0.87.E7.AD.BE.E5.B5.8C.E5.85.A5.E5.AD.97.E4.BD.93" name=".E4.BD.BF.E7.94.A8.5BEmbed.5D.E6.A0.87.E7.AD.BE.E5.B5.8C.E5.85.A5.E5.AD.97.E4.BD.93"></a></p>
<h2><span class="mw-headline">使用[Embed]标签嵌入字体 </span></h2>
<p>除了嵌入图片文件，SWFs，还有SWFs中的元件以外，[Embed]元数据标签还可以嵌入OpenType和TrueType字体到Flash文件中。在这个段落中，我将演示怎么使用[Embed]元数据标签在Flash CS4中嵌入字体。这篇文章将定你已经安装了Arial Bold字体在你的系统中。如果你没有这个字体，你可以从 SearchFreeFonts.com或者类似网站上购买它。</p>
<p><em>注意：[Embed]元数据标签仅仅支持类和成员变量，如果你尝试在函数前使用[Embed]标签，如下的编译错误将会显示：</em> <em>&quot;Embed is only supported on classes and member variables.&quot;(Embed仅仅支持类和成员变量)</em></p>
<p>如果你是跟随教程学习，请参阅示例文件中TrueType目录。</p>
<p>1、选择&quot;文件&quot;&gt;&quot;新建&quot;&gt;&quot;ActionScript文件&quot;，创建一个新的ActionScript文件。</p>
<p>2、保存文件为FontClass.as。</p>
<p>3、拷贝并粘贴如下代码到脚本窗口中：</p>
<pre>package 
{
    import flash.text.*;
    import flash.display.MovieClip;
    public class FontClass extends MovieClip 
    {            
    <strong> [Embed(source=&quot;Arial Bold.ttf&quot;, fontName=&quot;myFont&quot;, fontWeight=&quot;bold&quot;, advancedAntiAliasing=&quot;true&quot;, mimeType=&quot;application/x-font&quot;)]</strong>
     private var theClass:Class;
     public function FontClass ()
     { 
            var t:TextField=new TextField();
            t.embedFonts = true; 
            var textFormat:TextFormat=new  TextFormat();
            textFormat.size = &quot;30&quot;;
            textFormat.font = &quot;myFont&quot;;
            t.text = &quot;[Embed] metadata rocks!!!&quot;;
            t.width = 500;
            t.setTextFormat (textFormat); 
            addChild (t);  
     } 
    } 
}</pre>
<p><br />
上面代码中的高亮部分，[Embed]元数据标签中使用到如下的参数来嵌入一个Arial bold字体:</p>
<p>Source: 这个参数指出了font文件的位置。如果愿意，你可以使用systemFont参数确认名称而不是source来嵌入系统字体。 fontName: 这个参数指明了嵌入字体的名称，字体的名称是一个唯一标识，所以你可以通过名称来调用字体。 mimeType: 这个参数描述了嵌入元数据的MIME类型。因为你在这个例子中嵌入了一种字体，你可以设置MIME类型为&quot;application/x-font&quot;。 fontWeight: 这个参数表明了字体的粗细，如粗体或者正常。</p>
<p><em>注意：如果字体有粗细，并且你没有在[Embed]元数据标签中包含fontWeight参数，当测试SWF文件是，你会看到如下编译错误：</em></p>
<p><em>Exception during transcoding: Font for alias 'myFont' with plain weight and style was not found at...</em> (意外的转换：带有粗细和样式的别名为'myFont'的字体没有被找到在...)</p>
<p>随着嵌入字体的路径(如图11)。</p>
<p><img alt="" src="/UserFiles/200910/1912573653.jpg" /><br />
图11：如果嵌入字体的粗细在参数中没有明确，将会显示编译错误</p>
<p>如果嵌入字体有特殊的样式(如斜体)，在[Embed]元数据标签中没有使用fontStyle参数来明确，同类型的错误也将会显示出来。当使用元数据嵌入字体时，请确保明确所有必需的参数。</p>
<p>4、粘贴代码到脚本窗口后，确保保存文件为FontEmbed.as。</p>
<p>5、选择&quot;文件&quot;&gt;&quot;新建&quot;&gt;&quot;Flash文件(ActionScript 3.0)&quot;来创建一个新的Flash文件。</p>
<p>6、保存Flash文件为EmbedFont.fla。</p>
<p>7、点击舞台访问属性窗口(选择&quot;窗口&quot;&gt;&quot;属性&quot;)。</p>
<p>8、在发布属性中，输入类型FontClass到文档类文本框中。</p>
<p>9、选择&quot;控制&quot;&gt;&quot;测试影片&quot;，测试FLA。</p>
<p>10、当&lt;Flex SDK Required&gt;对话框出现时，点击&lt;Update Library Path&gt;按钮。这引导Flash将flex.swc添加到FLA文件的库路径。你可以再次测试FLA文件。</p>
<p>11、选择&quot;控制&quot;&gt;&quot;测试影片&quot;。这次，预期的文本(粗体的Arial字体)显示在EmbedFont.swf文件中(如图12)。</p>
<p><img alt="" src="/UserFiles/200910/1912581582.jpg" /><br />
图12：使用嵌入字体外观和粗细，测试FLA文件，查看显示信息</p>
<p>&nbsp;</p>
<p><a id=".E4.BD.BF.E7.94.A8.E5.B5.8C.E5.85.A5.E7.9A.84XML.E6.96.87.E4.BB.B6" name=".E4.BD.BF.E7.94.A8.E5.B5.8C.E5.85.A5.E7.9A.84XML.E6.96.87.E4.BB.B6"></a></p>
<h2><span class="mw-headline">使用嵌入的XML文件 </span></h2>
<p>在这篇文章的前面段落中，我讲述了使用 [Embed] 元数据标签嵌入图形文件，SWF文件，SWF文件中元件，还有字体等到SWF中。所有这些可能性都是非常有用的，不过还有另外一种类型的文件也可以采用 [Embed] 元数据标签嵌入到SWF中：XML文件。</p>
<p>我保留最好的到最后，这是因为这个功能对于将外部数据导入到SWF中非常用用 -- 而且很直接地就可以完成。根据嵌入的XML数据，你可以做一些有趣的事情，为将来的工程记住这个是一个极好的提醒。</p>
<p>下面的示例提供了使用 [Embed] 元数据标签嵌入一个XML文件的一个说明。如果你跟随教程学习，请参阅示例文件的XML目录。</p>
<p>1、选择&quot;文件&quot;&gt;&quot;新建&quot;&gt;&quot;Flash文件(ActionScript 3.0)&quot;创建文件，并保存文件为XMLLoader.fla。</p>
<p>2、选择&quot;文件&quot;&gt;&quot;新建&quot;&gt;&quot;ActionScript文件&quot;创建文件，并保存文件为 XMLLoader.as。</p>
<p>3、当XMLLoader.as被激活，拷贝并粘贴如下如下代码到脚本窗口：</p>
<pre>package 
{
    import flash.display.*;
    import flash.utils.ByteArray;
    public class XMLLoader extends Sprite
    {
      [Embed(source = &quot;training.xml&quot;,mimeType = &quot;application/octet-stream&quot;)]
      private var theClass:Class;
      public function XMLLoader ()
      {
           var xmlObj:Object = new theClass();
           trace(xmlObj);
      }
     }
}</pre>
<p><em>注意：当嵌入XML数据时，你必须将mimeType参数设置为&quot;application/octet-stream&quot;。</em> Flash不能通过XML文件的扩展名检测正确的MIME类型，所以无论什么时候你嵌入XML数据时都要设置mimeType参数。</p>
<p>4、将代码粘贴到脚本窗口后，确保保存XMLLoader.as文件。</p>
<p>5、激活XMLLoader.fla标签页。如果属性窗口还没有打开，在舞台上点击一次，打开属性检查器(&quot;窗口&quot;&gt;&quot;属性&quot;)。</p>
<p>6、在发布属性中，在文档类文本框中输入类名。在这个示例中，添加你创建的类：XMLLoader。</p>
<p>7、选择&quot;控制&quot;&gt;&quot;测试影片&quot;测试FLA。&lt;Flex SDK Required&gt;对话框出现了。</p>
<p>8、点击&lt; Update Library Path &gt;按钮将flex.swc添加到FLA文件库路径。</p>
<p>9、再次选择&quot;控制&quot;&gt;&quot;测试影片&quot;测试FLA。这次你会看到XML数据显示在输入面板中(如图13)。</p>
<p><img alt="" src="/UserFiles/200910/1912582990.jpg" /><br />
图13：输出面板显示嵌入到SWF中的XML数据</p>
<p>&nbsp;</p>
<p><a id=".E4.BB.8E.E8.BF.99.E9.87.8C.E5.8F.AF.E4.BB.A5.E5.8E.BB.E5.93.AA.E5.84.BF" name=".E4.BB.8E.E8.BF.99.E9.87.8C.E5.8F.AF.E4.BB.A5.E5.8E.BB.E5.93.AA.E5.84.BF"></a></p>
<h2><span class="mw-headline">从这里可以去哪儿 </span></h2>
<p>需要看其他关于使用 [Embed]元数据标签的示例，请参看&lt;Programming ActionScript 3.0 for Flash&gt;文档中&quot;Working with Pixel Bender shaders&quot; 段落的 Loading or embedding a shader 部分。同时也可参考&lt;Using Flash CS4 Professional &gt;文档中 &quot;ActionScript&quot;段落的 Using Flex metadata部分。也可以查看 Flash Authoring blog 以获取更多信息，还有Peter deHaan的blog：Using Flex classes in Flash CS4。可以访问 Flash Developer Center 和 Flex Developer Center 去获取更多的文章，指南和示例工程。</p>]]></description><wfw:commentRss><![CDATA[http://www.conanlwl.net/Feed/Comment/177.aspx]]></wfw:commentRss></item><item><title><![CDATA[[Mark][转]FLEX Builder compiler arguments 的设置]]></title><link><![CDATA[http://www.conanlwl.net/2009/10/19/Mark+zhuan+FLEX+Builder+compiler+arguments+de+she+zhi.aspx]]></link><category><![CDATA[ActionScript3]]></category><author><![CDATA[Conanlwl]]></author><pubDate>Mon, 19 Oct 2009 12:48:14 GMT</pubDate><description><![CDATA[<p>【编译参数】 <br />
-default-background-color int <br />
-default-frame-rate int <br />
-default-size width height <br />
设置SWF的背景色，帧频与宽高，这个也可以通过元标签设置，诸如 <br />
[SWF(width=&quot;720&quot;,height=&quot;560&quot;,backgroundColor=&quot;#000000&quot;)] <br />
<br />
-default-script-limits <br />
-max-recursion-depth <br />
-max-execution-time&nbsp; <br />
定义应用脚本程序的执行限制，最大代码条目，最大递归层次，最大的执行时间 <br />
<br />
-debug=true|false&nbsp; <br />
是否生成调试用SWF，调试用SWF会比一般的SWF要大。在Flex Builder中，默认为true，而在以Release方式时发布时，默认为false，所以用Release发布的文件会被debug时小很多。 <br />
<br />
-optimize=true|false&nbsp; <br />
优化as，减少文件大小，增加性能，默认为true。 <br />
<br />
-strict=true|false&nbsp; <br />
是否采用严谨模式 <br />
<br />
-use-network=true|false&nbsp; <br />
可读取网络或者可读取本地文件 <br />
<br />
-includes class [...] <br />
强制导入类，不管是否曾使用过这个类 <br />
<br />
-include-libraries library [...] <br />
强制导入SWC文件中的所有类，不管是否曾使用过这个类 <br />
<br />
-frames.frame label class_name [...]&nbsp; <br />
将类绑定label标记的帧上 <br />
<br />
【后台相关】 <br />
<br />
-context-root string <br />
-context-path string <br />
设置{context.root}的值，这个数值被应用在flex-services.xml，flex-config.xml内，是flash Remoting的必要参数，以确认服务端目录。也可通过设置Flex Server内的context root。 <br />
<br />
-services filename&nbsp; <br />
指定services-config.xml的位置，用于Flash Remoting。也可以通过新建项目的选项卡设置。 <br />
<br />
<br />
【调试时信息】 <br />
<br />
-benchmark=true|false&nbsp; <br />
是否输出编译时期的详细信息，默认为true <br />
<br />
-warnings=true|false&nbsp; <br />
是否显示警告信息 <br />
<br />
-show-unused-type-selector-warnings=true|false <br />
是否显示未使用CSS的警告信息 <br />
<br />
-show-binding-warnings=true|false&nbsp; <br />
是否显示绑定失效信息 <br />
<br />
【其他】 <br />
<br />
-keep-generated-actionscript=true|false&nbsp; <br />
保留编译MXML文件过程中的AS文件</p>]]></description><wfw:commentRss><![CDATA[http://www.conanlwl.net/Feed/Comment/176.aspx]]></wfw:commentRss></item><item><title><![CDATA[更换在线音乐 - Sunrise/Sunset ～LOVE is ALL～]]></title><link><![CDATA[http://www.conanlwl.net/2009/08/17/geng+huan+zai+xian+yin+le+SunriseSunset+LOVE+is+ALL.aspx]]></link><category><![CDATA[Ayumi Hamasaki]]></category><author><![CDATA[Conanlwl]]></author><pubDate>Mon, 17 Aug 2009 15:50:41 GMT</pubDate><description><![CDATA[<p>哈哈,AYU的最新单曲又来了. [Sunrise/Sunset ～LOVE is ALL～]</p>
<p><img alt="" src="/UserFiles/200908/1715541490.jpg" /></p>
<p>&nbsp;</p>
<p>日本天后滨崎步最新单曲碟《Sunrise/Sunset/LOVE is ALL》将于8月12日发售。新曲《Sunrise/LOVE is ALL》将作为馆广博主演的朝日台日剧《Dandy Daddy》的主题曲，于7月9日在电视上播送。 <br />
<br />
新曲《Sunrise/LOVE is ALL》将收在双A面单曲《Sunrise/Sunset/LOVE is ALL》，除了收有这两首曲子之外，还将特别收录电子混音《Special Mega-Mash-Up-Mix》，混音包括著名的《JULY 1st》《fairyland》等。 <br />
<br />
另外，单曲将以两种形式发行，包括CD和CD+DVD两种。DVD将收录两首歌的MV和拍摄花絮。 <br />
<br />
唱片于8月12日才上市，同一天日本还有众多大牌当红歌手出碟。但滨崎步已先拨头筹，《Sunrise/LOVE is ALL》近日已登上手机铃声下载榜的每周冠军。 <br />
<br />
本次的单曲封面是特意的去巴厘岛拍摄的，草裙舞的健康性感造型充满夏日的热情魅力。而MV则是拍自日本的海边公园，以Live的形式，在舞台上热唱歌。这首夏日歌曲欢快的旋律 加上滨崎步背心配热裤的性感打扮，充满轻松快乐的感觉，滨崎步台上的亲和力也令MV增色不少。</p>
<p>&nbsp;</p>
<p><img alt="" src="/UserFiles/200908/1715542951.jpg" /></p>
<p><span class="iptcom-title"><strong>专辑曲目</strong>:&nbsp;</span></p>
<p class="inner_content">1. Sunrise ~LOVE is ALL~ (Original mix)<br />
2. Sunset ~LOVE is ALL~ (Original mix)<br />
3. &quot;fairyland-glitter-BLUE BIRD-Greatful days-July 1st&quot; Mega-Mash-Up-Mix<br />
4. Sunrise ~LOVE is ALL~ (Original mix -Instrumental-)<br />
5. Sunset ~LOVE is ALL~ (Original mix -Instrumental-)</p>
<p class="inner_content">电驴下载链接:<a href="ed2k://|file|%E6%BB%A8%E5%B4%8E%E6%AD%A5%28Ayumi.Hamasaki%29.-.%5BSunrise%EF%BC%8FSunset%EF%BD%9ELOVE.is.ALL%EF%BD%9E%5D.%E5%8D%95%E6%9B%B2.%28MP3%29.rar|73941919|9c3f3a395990c82cac4acbb65898c4d3|/">ed2k://|file|%E6%BB%A8%E5%B4%8E%E6%AD%A5%28Ayumi.Hamasaki%29.-.%5BSunrise%EF%BC%8FSunset%EF%BD%9ELOVE.is.ALL%EF%BD%9E%5D.%E5%8D%95%E6%9B%B2.%28MP3%29.rar|73941919|9c3f3a395990c82cac4acbb65898c4d3|/</a></p>]]></description><wfw:commentRss><![CDATA[http://www.conanlwl.net/Feed/Comment/175.aspx]]></wfw:commentRss></item><item><title><![CDATA[猫叔的传奇]]></title><link><![CDATA[http://www.conanlwl.net/2009/08/10/mao+shu+de+chuan+qi.aspx]]></link><category><![CDATA[懒得分类]]></category><author><![CDATA[Conanlwl]]></author><pubDate>Mon, 10 Aug 2009 12:45:20 GMT</pubDate><description><![CDATA[<p>这是一只生活在日本乡下，红遍岛国的猫叔。猫叔滴特长是&mdash;&mdash;拿大顶！</p>
<p><img alt="" src="/UserFiles/200908/1012462168.jpg" /></p>
<p>从来不怕沉</p>
<p><img alt="" src="/UserFiles/200908/1012465856.jpg" /></p>
<p>有时猫叔喜欢把自己打扮成印度阿叉</p>
<p><img alt="" src="/UserFiles/200908/1012472746.jpg" /></p>
<p>偶尔还会cosplay一把羊二车那母</p>
<p><img alt="" src="/UserFiles/200908/1012480878.jpg" /></p>
<p>不要以为我们猫叔永远睁不开眼</p>
<p><img alt="" src="/UserFiles/200908/1012483204.jpg" /></p>
<p>人家可是明星咧！</p>
<p><img alt="" src="/UserFiles/200908/1012491437.jpg" /></p>
<p>有时梳中分</p>
<p><img alt="" src="/UserFiles/200908/1012504801.jpg" /></p>
<p>有时扎小辫</p>
<p><img alt="" src="/UserFiles/200908/1012511282.jpg" /></p>
<p>有时随意</p>
<p><img alt="" src="/UserFiles/200908/1012513637.jpg" /></p>
<p>有时扮小甜甜</p>
<p><img alt="" src="/UserFiles/200908/1012520167.jpg" /></p>
<p>其实猫叔原来只是个不入流的小演员</p>
<p><img alt="" src="/UserFiles/200908/1012522879.jpg" /></p>
<p>一直在夹缝中求生存</p>
<p><img alt="" src="/UserFiles/200908/1012525779.jpg" /></p>
<p>参加过黑涩会</p>
<p><img alt="" src="/UserFiles/200908/1012531775.jpg" /></p>
<p>跑龙套演过城管</p>
<p><img alt="" src="/UserFiles/200908/1012534243.jpg" /></p>
<p>还拍过什么庐山恋</p>
<p><img alt="" src="/UserFiles/200908/1012540490.jpg" /></p>
<p>后来出名是因为一张自拍艳照</p>
<p><img alt="" src="/UserFiles/200908/1012543050.jpg" /></p>
<p>猫叔曾经很彷徨</p>
<p><img alt="" src="/UserFiles/200908/1012545281.jpg" /></p>
<p>很无助</p>
<p><img alt="" src="/UserFiles/200908/1012551440.jpg" /></p>
<p>最终索性改走性感路线</p>
<p><img alt="" src="/UserFiles/200908/1012553671.jpg" /></p>
<p>很多不堪入目的镜头：&ldquo;亚埋爹~~~~&rdquo;</p>
<p><img alt="" src="/UserFiles/200908/1012560117.jpg" /></p>
<p>然后猫叔火了</p>
<p><img alt="" src="/UserFiles/200908/1012562232.jpg" /></p>
<p>杂志争相约TA拍照</p>
<p><img alt="" src="/UserFiles/200908/1012565339.jpg" /></p>
<p>偶尔回首看看一路走过地艰辛</p>
<p><img alt="" src="/UserFiles/200908/1012571620.jpg" /></p>
<p>小筒子门努力吧~！</p>
<p><img alt="" src="/UserFiles/200908/1012573532.jpg" /></p>
<p>祝大家天天开心！ <br />
<br />
<span style="text-decoration: underline"><wbr></wbr><span style="color: #800080; line-height: 1.8em">猫叔的传奇博客</span><wbr></wbr></span><wbr></wbr><a href="http://kagonekoshiro.blog86.fc2.com/" target="_blank" >http://kagonekoshiro.blog86.fc2.com/</a></p>]]></description><wfw:commentRss><![CDATA[http://www.conanlwl.net/Feed/Comment/174.aspx]]></wfw:commentRss></item><item><title><![CDATA[重写BLOG]]></title><link><![CDATA[http://www.conanlwl.net/2009/07/29/zhong+xie+BLOG.aspx]]></link><category><![CDATA[myBlog System]]></category><author><![CDATA[Conanlwl]]></author><pubDate>Wed, 29 Jul 2009 16:11:09 GMT</pubDate><description><![CDATA[<p>准备重写BLOG程序,重新架构,参考PETSHOT4的结构方式,重写个2.0版,只是没什么时间去写他,也不知何时才能完成重写了....</p>]]></description><wfw:commentRss><![CDATA[http://www.conanlwl.net/Feed/Comment/173.aspx]]></wfw:commentRss></item><item><title><![CDATA[一个简单的扑克框选选牌效果]]></title><link><![CDATA[http://www.conanlwl.net/2009/07/29/yi+ge+jian+dan+de+pu+ke+kuang+xuan+xuan+pai+xiao+guo.aspx]]></link><category><![CDATA[ActionScript3]]></category><author><![CDATA[Conanlwl]]></author><pubDate>Wed, 29 Jul 2009 15:52:40 GMT</pubDate><description><![CDATA[<p>一开始没写代码前,还以为一个简单的碰撞检测就能完成效果,可是写了测试以后,才发现了一个深度问题,不该碰测的也都碰测了,所以最后得用划的方框的四个顶定来确认哪一张开始往右做检测..</p>
<p><object codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" height="300" width="400" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000">
<param value="/UserFiles/200907/2915550285.swf" name="movie" />
<param value="high" name="quality" /></object></p>
<p><a title="点击下载" target="_blank" href="/UserFiles/200907/2915552546.rar"><font color="#ff0000" size="6"><strong>源码下载</strong></font></a></p>]]></description><wfw:commentRss><![CDATA[http://www.conanlwl.net/Feed/Comment/172.aspx]]></wfw:commentRss></item><item><title><![CDATA[悼念Michael Jackson逝世]]></title><link><![CDATA[http://www.conanlwl.net/2009/06/27/dao+nian+Michael+Jackson+shi+shi.aspx]]></link><category><![CDATA[my diary]]></category><author><![CDATA[Conanlwl]]></author><pubDate>Sat, 27 Jun 2009 18:28:08 GMT</pubDate><description><![CDATA[<p>迈克尔杰克逊是这个星球上绝无仅有的天才和巨星。U ARE NOT ALONE，但他却一直是孤独的。这样的去世方式，结束了流行音乐史上最伟大的一段故事。地球上，不再有让人战栗的传奇&hellip;&hellip; <img alt="" src="/FCKeditor/editor/images/smiley/onion/05.gif" /></p>
<p>这样的音乐奇才,就这样地走了,确实令人感到震撼,但愿在天堂能够真正的U ARE NOT ALONE.</p>
<p>音乐播放器换上几首jackson的歌以怀念这们音乐界的天才与大慈善家.<img alt="" src="/FCKeditor/editor/images/smiley/yoci/21.gif" /></p>]]></description><wfw:commentRss><![CDATA[http://www.conanlwl.net/Feed/Comment/171.aspx]]></wfw:commentRss></item><item><title><![CDATA[AS3歌词秀源码之歌词分析篇]]></title><link><![CDATA[http://www.conanlwl.net/2009/06/18/AS3+ge+ci+xiu+yuan+ma+zhi+ge+ci+fen+xi+pian.aspx]]></link><category><![CDATA[ActionScript3]]></category><author><![CDATA[Conanlwl]]></author><pubDate>Thu, 18 Jun 2009 21:25:14 GMT</pubDate><description><![CDATA[<p>想做实现歌词秀效果,首先第一步就是得加载歌词,而现在通用的还是LRC歌词格式,所以在加载歌词之前,我们有必要先了解一下什么是LRC歌词格式.(从百度百科COPY过来的..<img alt="" src="/FCKeditor/editor/images/smiley/onion/23.gif" />)</p>
<p>LRC歌词是一种包含着&ldquo;[*:*]&rdquo;形式的&ldquo;标签(tag)&rdquo;的、基于纯文本的歌词专用格式。最早由郭祥祥先生(Djohan)提出并在其程序中得到应用。这种歌词文件既可以用来实现卡拉OK功能（需要专门程序），又能以普通的文字处理软件查看、编辑。当然，实际操作时通常是用专门的LRC歌词编辑软件进行高效编辑的。以下具体介绍LRC格式中的&ldquo;标签&rdquo;。<br />
时间标签（Time-tag）<br />
　　形式为&quot;[mm:ss]&quot;或&quot;[mm:ss.fff]&quot;（分钟数:秒数）。<br />
　　数字须为非负整数，比如&quot;[12:34.5]&quot;是有效的，而&quot;[0x0C:-34.5]&quot;无效。它可以位于某行歌词中的任意位置。一行歌词可以包含多个时间标签（比如歌词中的迭句部分）。<br />
　　根据这些时间标签，用户端程序会按顺序依次高亮显示歌词，从而实现卡拉OK功能。另外，标签无须排序。<br />
　　标识标签（ID-tags）<br />
　　其格式为&quot;[标识名:值]&quot;。大小写等价。以下是预定义的标签.<br />
　　[ar:艺人名]<br />
　　[ti:曲名]<br />
　　[al:专辑名]<br />
　　[by:编者（指编辑LRC歌词的人）]<br />
&nbsp;&nbsp;&nbsp; 　[offset:时间补偿值]其单位是毫秒，正值表示整体提前，负值相反。这是用于总体调整显示快慢的。<br />
&nbsp;&nbsp; 　样例<br />
&nbsp;&nbsp; 　[ar:unknown]<br />
&nbsp;&nbsp; 　[ti:sample]<br />
&nbsp;&nbsp; 　[al:none]<br />
&nbsp;&nbsp; 　[by:me]<br />
&nbsp;&nbsp; 　[01:02.355][00:00]Thislineshouldbesungtwice<br />
&nbsp;&nbsp; 　[0:5.7]Andthisone...onceonly.<br />
　 开发标准(供程序员阅读参考)以下列出了开发支持LRC格式的软件时应遵守的一些标准。<br />
　&nbsp;&nbsp;&nbsp; 1.无论是否在行首，行内凡具有&ldquo;[*:*]&rdquo;形式的都应认为是标签。（注意：其中的冒号并非全角字符&ldquo;：&rdquo;）<br />
　　2.凡是标签都不应显示。<br />
　　3.凡是标签，且被冒号分隔的两部分都为非负数，则应认为是时间标签。<br />
　　4.因此，对于非标准形式（非&ldquo;[mm:ss]&rdquo;）的时间标签也应能识别（如&ldquo;[m:s]&rdquo;）。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5.应能正确识别连续的时间标签.如[00:01.555][01:03.234]歌词内容<br />
　　6.凡是标签，且非时间标签的，应认为是标识标签。<br />
　　7.标识名中大小写等价。<br />
　　8.为了向后兼容，应对未定义的新标签作忽略处理。另应对注释标签（[:]）后的同一行内容作忽略处理。<br />
　　9.应允许一行中存在多个标签，并能正确处理。<br />
　　10.应能正确处理未排序的标签。</p>
<p>鉴于这上面的一大堆的开发标准,我们必须编写一个容错性较高的歌词解释程序.另外在编写代码之前,建议没有正则表达式认识的人,先恶补一下正则的知识再来吧,因为分析字符串最好的工具莫过于正则表达式了.</p>
<p>在写主代码之前,先贴一个事件类LRCEvents,它的作用也就是存放一些用于广播事件的字符串常量罢了.</p>
<p><span style="font-weight: bold; color: #000080">package</span> <span style="color: #000000">net.conanlwl.LRC</span><br />
<span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">import</span> <span style="color: #000000">flash.events.Event</span>;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">class</span> <span style="color: #000000">LRCEvents</span> <span style="font-weight: bold; color: #000080">extends</span> <span style="color: #000000">Event</span><br />
&nbsp;&nbsp;&nbsp; <span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">function </span><span style="color: #000000">LRCEvents</span>(<span style="color: #000000">type</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">String</span><span style="color: #000000">,</span> <span style="color: #000000">bubbles</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Boolean</span><span style="color: #000000">=</span><span style="font-weight: bold; color: #000080">false</span><span style="color: #000000">,</span> <span style="color: #000000">cancelable</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Boolean</span><span style="color: #000000">=</span><span style="font-weight: bold; color: #000080">false</span>) <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">{</span> <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">super</span>(<span style="color: #000000">type</span><span style="color: #000000">,</span> <span style="color: #000000">bubbles</span><span style="color: #000000">,</span> <span style="color: #000000">cancelable</span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">static</span> <span style="font-weight: bold; color: #000080">const</span> <span style="color: #000000">LRC_READY</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">String</span> <span style="color: #000000">=</span> <span style="color: #0000ff">&quot;LRCReady&quot;</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">static</span> <span style="font-weight: bold; color: #000080">const</span> <span style="color: #000000">LRC_ERROR</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">String</span> <span style="color: #000000">=</span> <span style="color: #0000ff">&quot;LRCError&quot;</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">static</span> <span style="font-weight: bold; color: #000080">const</span> <span style="color: #000000">LRC_CHANGE</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">String</span> <span style="color: #000000">=</span> <span style="color: #0000ff">&quot;LRCChange&quot;</span>;<br />
&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
<span style="color: #000000">}</span></p>
<p><span style="color: #000000">对歌词分析的最终目的就是,就是生成一个二维数组,二维数组的每一个元素的格式都是[播放歌词的时间且以毫秒为单位 ,&nbsp; 歌词内容]. 所以我们在提取歌词中的时间以后[mm:ss.fff],还得将它换算为毫秒.</span></p>
<p><span style="color: #000000">我们第一个用到的正则表达式就是:</span></p>
<p><span style="color: #000000"><span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">r</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">RegExp</span> <span style="color: #000000">=</span> <span style="color: #0000ff">/(\[(\d{1,2}):(\d{1,2})(|\.\d{1,3})\])+[^\[]*/g</span>;</span></p>
<p><span style="color: #000000">r表示的意思为一句时间歌词格式.也即包括时间戳标签以及该时间所对应的歌词.表达式中的&quot;+&quot;号表示允许同时有多个连续的时间戳标签存在(注意:多个时间标签之间不能有空格.否则空格将也会被认为是歌词),这也正是符合上面提到的开发标准中的第5条.那么,如何描述歌词呢?我认为,一句歌词就是从时间标签结束以后一直到下一个&quot;[&quot;出现之前,就为一句歌词的内容了.所以用一个非左括号表达式来匹配歌词内容.</span></p>
<p><span style="color: #000000">接下来我们只要使用字符串中的match方法来匹配歌词,并将匹配结果存于一个数组中.注意,表达式r的最后必须加上全局标识g,才能够匹配所有符合格式的歌词,否则只会匹配第一句而已.</span></p>
<p><span style="color: #000000">假设字符串变量s为整个LRC文件里的所有字符串.使用arr_lrc数组来存放歌词</span></p>
<p><span style="color: #000000"><span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">arr_lrc</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Array</span> <span style="color: #000000">=</span> s<span style="color: #000000">.</span><span style="color: #ff0000">match</span>(<span style="color: #000000">r</span>);</span></p>
<p><span style="color: #000000">我用了一个辅助表达式r1来匹配一句歌词中的时间标签.此次不需全局标识g了.</span></p>
<p><span style="color: #000000">
<div class="source" style="color: #000000; font-family: '[object]','Lucida Console','Courier New','monospace'; background-color: #f9f7ed" jquery1245333845234="2">
<p><span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">r1</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">RegExp</span> <span style="color: #000000">=</span> <span style="color: #0000ff">/\[(\d{1,2}):(\d{1,2})(|\.\d{1,3})\]+/</span>;</p>
<p>另外,我们还需要一个函数来将时间标签换算为毫秒.我用一个getTimeArray(time:String):Array函数来实现.注意,它的返回值为一个数值,那是因为输入的time字符串有可能是多个连续的时间标签.以下是getTimeArray(time:String):Array函数的实现代码:</p>
<div class="source" style="color: #000000; font-family: '[object]','Lucida Console','Courier New','monospace'; background-color: #f9f7ed" jquery1245334113578="2"><span style="color: #008800; font-style: italic">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //解析时间戳.如[01:25.36][01.28.39][01.38.30]为毫秒数组</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">private</span> <span style="font-weight: bold; color: #000080">function </span><span style="color: #000000">getTimeArray</span>(<span style="color: #000000">time</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">String</span><span style="color: #000000">):</span><span style="font-weight: bold; color: #000080">Array</span><span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">r</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">RegExp</span> <span style="color: #000000">=</span> <span style="color: #0000ff">/\[(\d{1,3}):(\d{1,2})(|\.\d{1,3})\]/g;//</span><span style="color: #000000">[</span><span style="color: #000000">mm</span><span style="color: #000000">:</span>ss<span style="color: #000000">.</span><span style="color: #ff0000">fff</span><span style="color: #000000">],</span><span style="color: #a61717; background-color: #e3d2d2">全局搜索</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">result</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Array</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Array</span>();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">m</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Array</span> <span style="color: #000000">=</span> <span style="color: #000000">r</span><span style="color: #000000">.</span><span style="color: #ff0000">exec</span>(<span style="color: #000000">time</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">while</span>(<span style="color: #000000">m</span> <span style="color: #000000">!=</span> <span style="font-weight: bold; color: #000080">null</span><span style="color: #000000">){</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">t</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Number</span> <span style="color: #000000">=</span> <span style="color: #000000">Number</span>(<span style="color: #000000">m</span><span style="color: #000000">[</span><span style="color: #0000ff">1</span><span style="color: #000000">])</span> <span style="color: #000000">*</span> <span style="color: #0000ff">60</span> <span style="color: #000000">+</span> <span style="color: #000000">Number</span>(<span style="color: #000000">m</span><span style="color: #000000">[</span><span style="color: #0000ff">2</span><span style="color: #000000">])</span> <span style="color: #000000">+</span> <span style="color: #000000">Number</span>(<span style="color: #000000">m</span><span style="color: #000000">[</span><span style="color: #0000ff">3</span><span style="color: #000000">]);//</span><span style="color: #a61717; background-color: #e3d2d2">总秒数</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">t</span> <span style="color: #000000">-=</span> <span style="color: #000000">m_offset</span><span style="color: #0000ff">/1000;//</span><span style="color: #a61717; background-color: #e3d2d2">添加偏移值</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">t</span> <span style="color: #000000">=</span> <span style="color: #000000">Math</span><span style="color: #000000">.</span><span style="color: #ff0000">floor</span>(<span style="color: #000000">t</span> <span style="color: #000000">*</span> <span style="color: #0000ff">100</span>) <span style="color: #000000">*</span> <span style="color: #0000ff">10</span>; <span style="color: #008800; font-style: italic">//总毫秒数,将ss.fff精确到 ss.ff位.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">if</span>(<span style="color: #000000">t</span><span style="color: #000000">&lt;</span><span style="color: #0000ff">0</span>)<span style="color: #000000">t</span><span style="color: #000000">=</span><span style="color: #0000ff">0</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">result</span><span style="color: #000000">.</span><span style="color: #ff0000">push</span>(<span style="color: #000000">t</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">m</span> <span style="color: #000000">=</span> <span style="color: #000000">r</span><span style="color: #000000">.</span><span style="color: #ff0000">exec</span>(<span style="color: #000000">time</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">return</span> <span style="color: #000000">result</span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span></div>
</div>
</span></p>
<p><span style="color: #000000">至此,我们就可以通过getLRCArray(value:String):Array函数来分析歌词了,参数value就为整个LRC歌词字符串.</span></p>
<p><span style="color: #000000">
<div class="source" style="color: #000000; font-family: '[object]','Lucida Console','Courier New','monospace'; background-color: #f9f7ed" jquery1245334358546="2">
<p><span style="font-weight: bold; color: #000080">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public</span> <span style="font-weight: bold; color: #000080">function </span><span style="color: #000000">getLRCArray</span>(<span style="color: #000000">value</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">String</span><span style="color: #000000">):</span><span style="font-weight: bold; color: #000080">Array</span><span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">arr</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Array</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Array</span>();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">r</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">RegExp</span> <span style="color: #000000">=</span> <span style="color: #0000ff">/(\[(\d{1,2}):(\d{1,2})(|\.\d{1,3})\])+[^\[]*/g;//</span><span style="color: #000000">[</span><span style="color: #000000">mm</span><span style="color: #000000">:</span>ss<span style="color: #000000">.</span><span style="color: #ff0000">fff</span><span style="color: #000000">][</span><span style="color: #000000">mm</span><span style="color: #000000">:</span>ss<span style="color: #000000">.</span><span style="color: #ff0000">fff</span><span style="color: #000000">]...</span><span style="color: #a61717; background-color: #e3d2d2">歌词</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">r1</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">RegExp</span> <span style="color: #000000">=</span> <span style="color: #0000ff">/\[(\d{1,2}):(\d{1,2})(|\.\d{1,3})\]+/;//</span><span style="color: #000000">[</span><span style="color: #000000">mm</span><span style="color: #000000">:</span>ss<span style="color: #000000">.</span><span style="color: #ff0000">fff</span><span style="color: #000000">][</span><span style="color: #000000">mm</span><span style="color: #000000">:</span>ss<span style="color: #000000">.</span><span style="color: #ff0000">fff</span><span style="color: #000000">]...</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> s<span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">String</span> <span style="color: #000000">=</span> <span style="color: #000000">value</span><span style="color: #000000">;//</span><span style="color: #a61717; background-color: #e3d2d2">创建歌词副本</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">arr_lrc</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Array</span> <span style="color: #000000">=</span> s<span style="color: #000000">.</span><span style="color: #ff0000">match</span>(<span style="color: #000000">r</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">for</span>(<span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">i</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">uint</span><span style="color: #000000">=</span><span style="color: #0000ff">0</span>; <span style="color: #000000">i</span> <span style="color: #000000">&lt;</span> <span style="color: #000000">arr_lrc</span><span style="color: #000000">.</span><span style="color: #ff0000">length</span>; <span style="color: #000000">i</span><span style="color: #000000">++){</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">txt</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">String</span> <span style="color: #000000">=</span> <span style="color: #000000">String</span>(<span style="color: #000000">arr_lrc</span><span style="color: #000000">[</span><span style="color: #000000">i</span><span style="color: #000000">]).</span><span style="color: #000000">replace</span>(<span style="color: #000000">r1</span><span style="color: #000000">,</span><span style="color: #0000ff">&quot;&quot;</span>); <span style="color: #008800; font-style: italic">//歌词</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">txt</span> <span style="color: #000000">=</span> <span style="color: #000000">txt</span><span style="color: #000000">.</span><span style="color: #ff0000">replace</span><span style="color: #000000">(/\</span><span style="color: #000000">r</span><span style="color: #000000">|\</span>n<span style="color: #0000ff">/g,&quot;&quot;); //</span><span style="color: #a61717; background-color: #e3d2d2">去掉换行符</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">timeArray</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Array</span> <span style="color: #000000">=</span> <span style="color: #000000">getTimeArray</span>(<span style="color: #000000">r1</span><span style="color: #000000">.</span><span style="color: #ff0000">exec</span>(<span style="color: #000000">arr_lrc</span><span style="color: #000000">[</span><span style="color: #000000">i</span><span style="color: #000000">])[</span><span style="color: #0000ff">0</span><span style="color: #000000">]);</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">for</span>(<span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">j</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">uint</span> <span style="color: #000000">=</span> <span style="color: #0000ff">0</span>; <span style="color: #000000">j</span><span style="color: #000000">&lt;</span><span style="color: #000000">timeArray</span><span style="color: #000000">.</span><span style="color: #ff0000">length</span>;<span style="color: #000000">j</span><span style="color: #000000">++){</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">arr</span><span style="color: #000000">.</span><span style="color: #ff0000">push</span><span style="color: #000000">([</span><span style="color: #000000">timeArray</span><span style="color: #000000">[</span><span style="color: #000000">j</span><span style="color: #000000">],</span><span style="color: #000000">txt</span><span style="color: #000000">]);</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">arr</span><span style="color: #000000">.</span><span style="color: #ff0000">sortOn</span>(<span style="color: #0000ff">&quot;0&quot;</span><span style="color: #000000">,</span><span style="color: #000000">Array</span><span style="color: #000000">.</span><span style="color: #ff0000">NUMERIC</span><span style="color: #000000">);//</span><span style="color: #a61717; background-color: #e3d2d2">根据第一维排序</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">return</span> <span style="color: #000000">arr</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span></p>
<p>至于其它的标签,如人名,专辑名什么的,我们可以用一个通用的函数getTag(tag:String):String来实现:</p>
<div class="source" style="color: #000000; font-family: '[object]','Lucida Console','Courier New','monospace'; background-color: #f9f7ed" jquery1245334478781="2">
<p><span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">function </span><span style="color: #000000">getTag</span>(<span style="color: #000000">tag</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">String</span><span style="color: #000000">):</span><span style="font-weight: bold; color: #000080">String</span><span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">r</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">RegExp</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">RegExp</span>(<span style="color: #0000ff">&quot;\\[&quot;</span> <span style="color: #000000">+</span> <span style="color: #000000">tag</span> <span style="color: #000000">+</span> <span style="color: #0000ff">&quot;:([^\\]]*)\\]&quot;</span><span style="color: #000000">,</span><span style="color: #0000ff">&quot;i&quot;</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">m</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Array</span> <span style="color: #000000">=</span> <span style="color: #000000">r</span><span style="color: #000000">.</span><span style="color: #ff0000">exec</span>(<span style="color: #000000">lrc</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">if</span>(<span style="color: #000000">m</span> <span style="color: #000000">!=</span> <span style="font-weight: bold; color: #000080">null</span> <span style="color: #000000">&amp;&amp;</span> <span style="color: #000000">m</span><span style="color: #000000">.</span><span style="color: #ff0000">length</span> <span style="color: #000000">==</span> <span style="color: #0000ff">2</span><span style="color: #000000">){</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">return</span> <span style="color: #000000">m</span><span style="color: #000000">[</span><span style="color: #0000ff">1</span><span style="color: #000000">];</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><span style="font-weight: bold; color: #000080">else</span>&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">return</span> <span style="color: #0000ff">&quot;&quot;</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span></p>
<p>以下就是分析加载并分析歌词的全代码:</p>
<div class="source" style="color: #000000; font-family: '[object]','Lucida Console','Courier New','monospace'; background-color: #f9f7ed" jquery1245334583515="2">
<p><span style="font-weight: bold; color: #000080">package</span> <span style="color: #000000">net.conanlwl.LRC</span><br />
<span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">import</span> <span style="color: #000000">flash.events.ErrorEvent</span>;<br />
&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">import</span> <span style="color: #000000">flash.events.Event</span>;<br />
&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">import</span> <span style="color: #000000">flash.events.EventDispatcher</span>;<br />
&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">import</span> <span style="color: #000000">flash.events.IOErrorEvent</span>;<br />
&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">import</span> <span style="color: #000000">flash.net.URLLoader</span>;<br />
&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">import</span> <span style="color: #000000">flash.net.URLLoaderDataFormat</span>;<br />
&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">import</span> <span style="color: #000000">flash.net.URLRequest</span>;<br />
&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">import</span> <span style="color: #000000">flash.utils.ByteArray</span>;<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">import</span> <span style="color: #000000">net.conanlwl.utils.ArrayUtilities</span>;<br />
<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">class</span> <span style="color: #000000">LoadLRC</span> <span style="font-weight: bold; color: #000080">extends</span> <span style="color: #000000">EventDispatcher</span>&nbsp;&nbsp;&nbsp; <span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">private</span> <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">load</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">URLLoader</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">URLLoader</span>();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">private</span> <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">m_lrcURL</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">String</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">private</span> <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">lrc</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">String</span> <span style="color: #000000">=</span> <span style="color: #0000ff">&quot;&quot;</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">private</span> <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">m_offset</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Number</span><span style="color: #000000">;//</span><span style="color: #a61717; background-color: #e3d2d2">时间补偿值</span><span style="color: #000000">,</span><span style="color: #a61717; background-color: #e3d2d2">其单位是毫秒，正值表示整体提前，负值相反。这是用于总体调整显示快慢的。</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">private</span> <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">lrcArray</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Array</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Array</span><span style="color: #000000">();//</span><span style="color: #a61717; background-color: #e3d2d2">一个二维数组</span><span style="color: #000000">.</span><span style="color: #a61717; background-color: #e3d2d2">第一维保存播放时间</span><span style="color: #000000">,</span><span style="color: #a61717; background-color: #e3d2d2">第二维保存歌词内容</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">function </span><span style="color: #000000">LoadLRC</span>(<span style="color: #000000">lrcURL</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">String</span>)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">{</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">this</span><span style="color: #000000">.</span><span style="color: #ff0000">m_lrcURL</span> <span style="color: #000000">=</span> <span style="color: #000000">lrcURL</span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">load</span><span style="color: #000000">.</span><span style="color: #ff0000">load</span>(<span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">URLRequest</span>(<span style="color: #000000">lrcURL</span>));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">load</span><span style="color: #000000">.</span><span style="color: #ff0000">dataFormat</span> <span style="color: #000000">=</span> <span style="color: #000000">URLLoaderDataFormat</span><span style="color: #000000">.</span><span style="color: #ff0000">BINARY</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">load</span><span style="color: #000000">.</span><span style="color: #ff0000">addEventListener</span>(<span style="color: #000000">Event</span><span style="color: #000000">.</span><span style="color: #ff0000">COMPLETE</span><span style="color: #000000">,</span><span style="color: #000000">onLRCLoaded</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">load</span><span style="color: #000000">.</span><span style="color: #ff0000">addEventListener</span>(<span style="color: #000000">IOErrorEvent</span><span style="color: #000000">.</span><span style="color: #ff0000">IO_ERROR</span><span style="color: #000000">,</span><span style="color: #000000">onError</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">function</span> <span style="font-weight: bold; color: #000080">get</span> <span style="color: #000000">LRCArray</span><span style="color: #000000">():</span><span style="color: #000000">Array</span><span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">return</span> <span style="color: #000000">ArrayUtilities</span><span style="color: #000000">.</span><span style="color: #ff0000">duplicate</span>(<span style="color: #000000">lrcArray</span><span style="color: #000000">,</span><span style="font-weight: bold; color: #000080">true</span>) <span style="font-weight: bold; color: #000080">as</span> <span style="color: #000000">Array</span>; <span style="color: #008800; font-style: italic">//复制一个副本</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">private</span> <span style="font-weight: bold; color: #000080">function </span><span style="color: #000000">onLRCLoaded</span>(<span style="color: #000000">e</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Event</span><span style="color: #000000">):</span><span style="font-weight: bold; color: #000080">void</span><span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">bytes</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">ByteArray</span> <span style="color: #000000">=</span> <span style="color: #000000">load</span><span style="color: #000000">.</span><span style="color: #ff0000">data</span> <span style="font-weight: bold; color: #000080">as</span> <span style="color: #000000">ByteArray</span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">if</span>(<span style="color: #000000">bytes</span> <span style="color: #000000">!=</span> <span style="font-weight: bold; color: #000080">null</span>)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #008800; font-style: italic">//bytes.position = 0;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">lrc</span> <span style="color: #000000">=</span> <span style="color: #000000">bytes</span><span style="color: #000000">.</span><span style="color: #ff0000">readMultiByte</span>(<span style="color: #000000">bytes</span><span style="color: #000000">.</span><span style="color: #ff0000">bytesAvailable</span><span style="color: #000000">,</span><span style="color: #0000ff">&quot;gb2312&quot;</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">m_offset</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">this</span><span style="color: #000000">.</span><span style="color: #ff0000">offset</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">lrcArray</span> <span style="color: #000000">=</span> <span style="color: #000000">getLRCArray</span>(<span style="color: #000000">lrc</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">dispatchEvent</span>(<span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">LRCEvents</span>(<span style="color: #000000">LRCEvents</span><span style="color: #000000">.</span><span style="color: #ff0000">LRC_READY</span>));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">else</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">{//</span><span style="color: #a61717; background-color: #e3d2d2">加载错误</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">dispatchEvent</span>(<span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">LRCEvents</span>(<span style="color: #000000">LRCEvents</span><span style="color: #000000">.</span><span style="color: #ff0000">LRC_ERROR</span>));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">private</span> <span style="font-weight: bold; color: #000080">function </span><span style="color: #000000">onError</span>(<span style="color: #000000">e</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">ErrorEvent</span><span style="color: #000000">):</span><span style="font-weight: bold; color: #000080">void</span><span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">dispatchEvent</span>(<span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">LRCEvents</span>(<span style="color: #000000">LRCEvents</span><span style="color: #000000">.</span><span style="color: #ff0000">LRC_ERROR</span>));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">function </span><span style="color: #000000">getLRCArray</span>(<span style="color: #000000">value</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">String</span><span style="color: #000000">):</span><span style="font-weight: bold; color: #000080">Array</span><span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">arr</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Array</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Array</span>();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">r</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">RegExp</span> <span style="color: #000000">=</span> <span style="color: #0000ff">/(\[(\d{1,2}):(\d{1,2})(|\.\d{1,3})\])+[^\[]*/g;//</span><span style="color: #000000">[</span><span style="color: #000000">mm</span><span style="color: #000000">:</span>ss<span style="color: #000000">.</span><span style="color: #ff0000">fff</span><span style="color: #000000">][</span><span style="color: #000000">mm</span><span style="color: #000000">:</span>ss<span style="color: #000000">.</span><span style="color: #ff0000">fff</span><span style="color: #000000">]...</span><span style="color: #a61717; background-color: #e3d2d2">歌词</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">r1</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">RegExp</span> <span style="color: #000000">=</span> <span style="color: #0000ff">/\[(\d{1,2}):(\d{1,2})(|\.\d{1,3})\]+/;//</span><span style="color: #000000">[</span><span style="color: #000000">mm</span><span style="color: #000000">:</span>ss<span style="color: #000000">.</span><span style="color: #ff0000">fff</span><span style="color: #000000">][</span><span style="color: #000000">mm</span><span style="color: #000000">:</span>ss<span style="color: #000000">.</span><span style="color: #ff0000">fff</span><span style="color: #000000">]...</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> s<span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">String</span> <span style="color: #000000">=</span> <span style="color: #000000">value</span><span style="color: #000000">;//</span><span style="color: #a61717; background-color: #e3d2d2">创建歌词副本</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">arr_lrc</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Array</span> <span style="color: #000000">=</span> s<span style="color: #000000">.</span><span style="color: #ff0000">match</span>(<span style="color: #000000">r</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">for</span>(<span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">i</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">uint</span><span style="color: #000000">=</span><span style="color: #0000ff">0</span>; <span style="color: #000000">i</span> <span style="color: #000000">&lt;</span> <span style="color: #000000">arr_lrc</span><span style="color: #000000">.</span><span style="color: #ff0000">length</span>; <span style="color: #000000">i</span><span style="color: #000000">++){</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">txt</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">String</span> <span style="color: #000000">=</span> <span style="color: #000000">String</span>(<span style="color: #000000">arr_lrc</span><span style="color: #000000">[</span><span style="color: #000000">i</span><span style="color: #000000">]).</span><span style="color: #000000">replace</span>(<span style="color: #000000">r1</span><span style="color: #000000">,</span><span style="color: #0000ff">&quot;&quot;</span>); <span style="color: #008800; font-style: italic">//歌词</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">txt</span> <span style="color: #000000">=</span> <span style="color: #000000">txt</span><span style="color: #000000">.</span><span style="color: #ff0000">replace</span><span style="color: #000000">(/\</span><span style="color: #000000">r</span><span style="color: #000000">|\</span>n<span style="color: #0000ff">/g,&quot;&quot;); //</span><span style="color: #a61717; background-color: #e3d2d2">去掉换行符</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">timeArray</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Array</span> <span style="color: #000000">=</span> <span style="color: #000000">getTimeArray</span>(<span style="color: #000000">r1</span><span style="color: #000000">.</span><span style="color: #ff0000">exec</span>(<span style="color: #000000">arr_lrc</span><span style="color: #000000">[</span><span style="color: #000000">i</span><span style="color: #000000">])[</span><span style="color: #0000ff">0</span><span style="color: #000000">]);</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">for</span>(<span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">j</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">uint</span> <span style="color: #000000">=</span> <span style="color: #0000ff">0</span>; <span style="color: #000000">j</span><span style="color: #000000">&lt;</span><span style="color: #000000">timeArray</span><span style="color: #000000">.</span><span style="color: #ff0000">length</span>;<span style="color: #000000">j</span><span style="color: #000000">++){</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">arr</span><span style="color: #000000">.</span><span style="color: #ff0000">push</span><span style="color: #000000">([</span><span style="color: #000000">timeArray</span><span style="color: #000000">[</span><span style="color: #000000">j</span><span style="color: #000000">],</span><span style="color: #000000">txt</span><span style="color: #000000">]);</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">arr</span><span style="color: #000000">.</span><span style="color: #ff0000">sortOn</span>(<span style="color: #0000ff">&quot;0&quot;</span><span style="color: #000000">,</span><span style="color: #000000">Array</span><span style="color: #000000">.</span><span style="color: #ff0000">NUMERIC</span><span style="color: #000000">);//</span><span style="color: #a61717; background-color: #e3d2d2">根据第一维排序</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">return</span> <span style="color: #000000">arr</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #008800; font-style: italic">//解析时间戳,如[01:25.36][01.28.39][01.38.30]为毫秒数组</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">private</span> <span style="font-weight: bold; color: #000080">function </span><span style="color: #000000">getTimeArray</span>(<span style="color: #000000">time</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">String</span><span style="color: #000000">):</span><span style="font-weight: bold; color: #000080">Array</span><span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">r</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">RegExp</span> <span style="color: #000000">=</span> <span style="color: #0000ff">/\[(\d{1,3}):(\d{1,2})(|\.\d{1,3})\]/g;//</span><span style="color: #000000">[</span><span style="color: #000000">mm</span><span style="color: #000000">:</span>ss<span style="color: #000000">.</span><span style="color: #ff0000">fff</span><span style="color: #000000">],</span><span style="color: #a61717; background-color: #e3d2d2">全局搜索</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">result</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Array</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Array</span>();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">m</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Array</span> <span style="color: #000000">=</span> <span style="color: #000000">r</span><span style="color: #000000">.</span><span style="color: #ff0000">exec</span>(<span style="color: #000000">time</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">while</span>(<span style="color: #000000">m</span> <span style="color: #000000">!=</span> <span style="font-weight: bold; color: #000080">null</span><span style="color: #000000">){</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">t</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Number</span> <span style="color: #000000">=</span> <span style="color: #000000">Number</span>(<span style="color: #000000">m</span><span style="color: #000000">[</span><span style="color: #0000ff">1</span><span style="color: #000000">])</span> <span style="color: #000000">*</span> <span style="color: #0000ff">60</span> <span style="color: #000000">+</span> <span style="color: #000000">Number</span>(<span style="color: #000000">m</span><span style="color: #000000">[</span><span style="color: #0000ff">2</span><span style="color: #000000">])</span> <span style="color: #000000">+</span> <span style="color: #000000">Number</span>(<span style="color: #000000">m</span><span style="color: #000000">[</span><span style="color: #0000ff">3</span><span style="color: #000000">]);//</span><span style="color: #a61717; background-color: #e3d2d2">总秒数</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">t</span> <span style="color: #000000">-=</span> <span style="color: #000000">m_offset</span><span style="color: #0000ff">/1000;//</span><span style="color: #a61717; background-color: #e3d2d2">添加偏移值</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">t</span> <span style="color: #000000">=</span> <span style="color: #000000">Math</span><span style="color: #000000">.</span><span style="color: #ff0000">floor</span>(<span style="color: #000000">t</span> <span style="color: #000000">*</span> <span style="color: #0000ff">100</span>) <span style="color: #000000">*</span> <span style="color: #0000ff">10</span>; <span style="color: #008800; font-style: italic">//总毫秒数,将ss.fff精确到 ss.ff位.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">if</span>(<span style="color: #000000">t</span><span style="color: #000000">&lt;</span><span style="color: #0000ff">0</span>)<span style="color: #000000">t</span><span style="color: #000000">=</span><span style="color: #0000ff">0</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">result</span><span style="color: #000000">.</span><span style="color: #ff0000">push</span>(<span style="color: #000000">t</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">m</span> <span style="color: #000000">=</span> <span style="color: #000000">r</span><span style="color: #000000">.</span><span style="color: #ff0000">exec</span>(<span style="color: #000000">time</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">return</span> <span style="color: #000000">result</span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #008800; font-style: italic">//得到指定标签的内容</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">function </span><span style="color: #000000">getTag</span>(<span style="color: #000000">tag</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">String</span><span style="color: #000000">):</span><span style="font-weight: bold; color: #000080">String</span><span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">r</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">RegExp</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">RegExp</span>(<span style="color: #0000ff">&quot;\\[&quot;</span> <span style="color: #000000">+</span> <span style="color: #000000">tag</span> <span style="color: #000000">+</span> <span style="color: #0000ff">&quot;:([^\\]]*)\\]&quot;</span><span style="color: #000000">,</span><span style="color: #0000ff">&quot;i&quot;</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">m</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Array</span> <span style="color: #000000">=</span> <span style="color: #000000">r</span><span style="color: #000000">.</span><span style="color: #ff0000">exec</span>(<span style="color: #000000">lrc</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">if</span>(<span style="color: #000000">m</span> <span style="color: #000000">!=</span> <span style="font-weight: bold; color: #000080">null</span> <span style="color: #000000">&amp;&amp;</span> <span style="color: #000000">m</span><span style="color: #000000">.</span><span style="color: #ff0000">length</span> <span style="color: #000000">==</span> <span style="color: #0000ff">2</span><span style="color: #000000">){</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">return</span> <span style="color: #000000">m</span><span style="color: #000000">[</span><span style="color: #0000ff">1</span><span style="color: #000000">];</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><span style="font-weight: bold; color: #000080">else</span>&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">return</span> <span style="color: #0000ff">&quot;&quot;</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #008800; font-style: italic">//获得艺人名 artist</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">function</span> <span style="font-weight: bold; color: #000080">get</span> <span style="color: #000000">Ar</span><span style="color: #000000">():</span><span style="color: #000000">String</span><span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">return</span> <span style="color: #000000">getTag</span>(<span style="color: #0000ff">&quot;ar&quot;</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #008800; font-style: italic">//获得曲名 Title</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">function</span> <span style="font-weight: bold; color: #000080">get</span> <span style="color: #000000">Ti</span><span style="color: #000000">():</span><span style="color: #000000">String</span><span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">return</span> <span style="color: #000000">getTag</span>(<span style="color: #0000ff">&quot;ti&quot;</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #008800; font-style: italic">//获得专辑album</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">function</span> <span style="font-weight: bold; color: #000080">get</span> <span style="color: #000000">Al</span><span style="color: #000000">():</span><span style="color: #000000">String</span><span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">return</span> <span style="color: #000000">getTag</span>(<span style="color: #0000ff">&quot;al&quot;</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #008800; font-style: italic">//获得编辑LRC歌词的作者by</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">function</span> <span style="font-weight: bold; color: #000080">get</span> <span style="color: #000000">By</span><span style="color: #000000">():</span><span style="color: #000000">String</span><span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">return</span> <span style="color: #000000">getTag</span>(<span style="color: #0000ff">&quot;by&quot;</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #008800; font-style: italic">//获得总体时间偏移值</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">function</span> <span style="font-weight: bold; color: #000080">get</span> <span style="color: #000000">offset</span><span style="color: #000000">():</span><span style="color: #000000">Number</span><span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">o</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">String</span> <span style="color: #000000">=</span> <span style="color: #000000">getTag</span>(<span style="color: #0000ff">&quot;offset&quot;</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">if</span>(<span style="color: #000000">o</span><span style="color: #000000">==</span><span style="font-weight: bold; color: #000080">null</span> || <span style="color: #000000">isNaN</span>(<span style="color: #000000">Number</span>(<span style="color: #000000">o</span>)))<span style="font-weight: bold; color: #000080">return</span> <span style="color: #0000ff">0</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">else</span> <span style="font-weight: bold; color: #000080">return</span> <span style="color: #000000">Number</span>(<span style="color: #000000">o</span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
<br />
&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
<span style="color: #000000">}</span></p>
<p>这是工具类.目前的功能只有复制数组</p>
<div class="source" style="color: #000000; font-family: '[object]','Lucida Console','Courier New','monospace'; background-color: #f9f7ed" jquery1245334650250="2"><span style="font-weight: bold; color: #000080">package</span> <span style="color: #000000">net.conanlwl.utils</span><br />
<span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">class</span> <span style="color: #000000">ArrayUtilities</span><br />
&nbsp;&nbsp;&nbsp; <span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">function </span><span style="color: #000000">ArrayUtilities</span>()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #008800; font-style: italic">//复制数组,bRecursive为true时,可以复制二维数组</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">static</span> <span style="font-weight: bold; color: #000080">function </span><span style="color: #000000">duplicate</span>(<span style="color: #000000">oArray</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Object</span><span style="color: #000000">,</span> <span style="color: #000000">bRecursive</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Boolean</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">false</span><span style="color: #000000">):</span><span style="font-weight: bold; color: #000080">Object</span> <span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">oDuplicate</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Object</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">if</span>(<span style="color: #000000">bRecursive</span>) <span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">if</span>(<span style="color: #000000">oArray</span> <span style="font-weight: bold; color: #000080">is</span> <span style="color: #000000">Array</span>) <span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">oDuplicate</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Array</span>();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">for</span>(<span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">i</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Number</span> <span style="color: #000000">=</span> <span style="color: #0000ff">0</span>; <span style="color: #000000">i</span> <span style="color: #000000">&lt;</span> <span style="color: #000000">oArray</span><span style="color: #000000">.</span><span style="color: #ff0000">length</span>; <span style="color: #000000">i</span><span style="color: #000000">++)</span> <span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">if</span>(<span style="color: #000000">oArray</span><span style="color: #000000">[</span><span style="color: #000000">i</span><span style="color: #000000">]</span> <span style="font-weight: bold; color: #000080">is</span> <span style="color: #000000">Object</span>) <span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">oDuplicate</span><span style="color: #000000">[</span><span style="color: #000000">i</span><span style="color: #000000">]</span> <span style="color: #000000">=</span> <span style="color: #000000">duplicate</span>(<span style="color: #000000">oArray</span><span style="color: #000000">[</span><span style="color: #000000">i</span><span style="color: #000000">]);</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">else</span> <span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">oDuplicate</span><span style="color: #000000">[</span><span style="color: #000000">i</span><span style="color: #000000">]</span> <span style="color: #000000">=</span> <span style="color: #000000">oArray</span><span style="color: #000000">[</span><span style="color: #000000">i</span><span style="color: #000000">];</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">return</span> <span style="color: #000000">oDuplicate</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">else</span> <span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">oDuplicate</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Object</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Object</span>();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">for</span>(<span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">sItem</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">String</span> <span style="font-weight: bold; color: #000080">in</span> <span style="color: #000000">oArray</span>) <span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">if</span>(<span style="color: #000000">oArray</span><span style="color: #000000">[</span><span style="color: #000000">sItem</span><span style="color: #000000">]</span> <span style="font-weight: bold; color: #000080">is</span> <span style="color: #000000">Object</span> <span style="color: #000000">&amp;&amp;</span> <span style="color: #000000">!(</span><span style="color: #000000">oArray</span><span style="color: #000000">[</span><span style="color: #000000">sItem</span><span style="color: #000000">]</span> <span style="font-weight: bold; color: #000080">is</span> <span style="color: #000000">String</span>) <span style="color: #000000">&amp;&amp;</span> <span style="color: #000000">!(</span><span style="color: #000000">oArray</span><span style="color: #000000">[</span><span style="color: #000000">sItem</span><span style="color: #000000">]</span> <span style="font-weight: bold; color: #000080">is</span> <span style="color: #000000">Boolean</span>) <span style="color: #000000">&amp;&amp;</span> <span style="color: #000000">!(</span><span style="color: #000000">oArray</span><span style="color: #000000">[</span><span style="color: #000000">sItem</span><span style="color: #000000">]</span> <span style="font-weight: bold; color: #000080">is</span> <span style="color: #000000">Number</span>)) <span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">oDuplicate</span><span style="color: #000000">[</span><span style="color: #000000">sItem</span><span style="color: #000000">]</span> <span style="color: #000000">=</span> <span style="color: #000000">duplicate</span>(<span style="color: #000000">oArray</span><span style="color: #000000">[</span><span style="color: #000000">sItem</span><span style="color: #000000">],</span> <span style="color: #000000">bRecursive</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">else</span> <span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">oDuplicate</span><span style="color: #000000">[</span><span style="color: #000000">sItem</span><span style="color: #000000">]</span> <span style="color: #000000">=</span> <span style="color: #000000">oArray</span><span style="color: #000000">[</span><span style="color: #000000">sItem</span><span style="color: #000000">];</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">return</span> <span style="color: #000000">oDuplicate</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">else</span> <span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">if</span>(<span style="color: #000000">oArray</span> <span style="font-weight: bold; color: #000080">is</span> <span style="color: #000000">Array</span>) <span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">return</span> <span style="color: #000000">oArray</span><span style="color: #000000">.</span><span style="color: #ff0000">concat</span>();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">else</span> <span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">oDuplicate</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Object</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Object</span>();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">for</span>(<span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">sItem</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">String</span> <span style="font-weight: bold; color: #000080">in</span> <span style="color: #000000">oArray</span>) <span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">oDuplicate</span><span style="color: #000000">[</span><span style="color: #000000">sItem</span><span style="color: #000000">]</span> <span style="color: #000000">=</span> <span style="color: #000000">oArray</span><span style="color: #000000">[</span><span style="color: #000000">sItem</span><span style="color: #000000">];</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">return</span> <span style="color: #000000">oDuplicate</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
<br />
&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
<span style="color: #000000">}</span></div>
</div>
</div>
</div>
</span></p>
<p>&nbsp;</p>]]></description><wfw:commentRss><![CDATA[http://www.conanlwl.net/Feed/Comment/170.aspx]]></wfw:commentRss></item><item><title><![CDATA[as3实现仿千千静听歌词秀效果]]></title><link><![CDATA[http://www.conanlwl.net/2009/06/13/as3+shi+xian+fang+qian+qian+jing+ting+ge+ci+xiu+xiao+guo.aspx]]></link><category><![CDATA[ActionScript3]]></category><author><![CDATA[Conanlwl]]></author><pubDate>Sat, 13 Jun 2009 14:56:59 GMT</pubDate><description><![CDATA[<p>&nbsp;</p>
<p><img alt="" src="/UserFiles/200906/1315071085.jpg" /></p>
<p>模拟千千静听的一个歌词秀效果,歌词面板可拖曳进行音乐进度同步调节.</p>
<p>音乐加载LRC歌词文件格式</p>
<p><font color="#ff0000" size="5"><strong>预览地址: </strong></font><a target="_blank" href="/demo/Spectrum/musicplayer.swf "><font color="#ff0000" size="5"><strong>http://www.conanlwl.net/demo/Spectrum/musicplayer.swf</strong></font> </a></p>
<p>&nbsp;</p>]]></description><wfw:commentRss><![CDATA[http://www.conanlwl.net/Feed/Comment/169.aspx]]></wfw:commentRss></item><item><title><![CDATA[几乎完美的四元数旋转]]></title><link><![CDATA[http://www.conanlwl.net/2009/05/14/ji+hu+wan+mei+de+si+yuan+shu+xuan+zhuan.aspx]]></link><category><![CDATA[Papervision3D]]></category><author><![CDATA[Conanlwl]]></author><pubDate>Thu, 14 May 2009 18:13:44 GMT</pubDate><description><![CDATA[<p>该接触PV3D这个引擎,而且对3D的编程也是一种半解,所以Mark两篇文章,以备自己学习PV3D用..</p>
<p>人类最初用9个值的矩阵（Matrix），来表示一个三维物体的旋转位置。它的缺陷是数据大，和无法自动在两个角度间产生过度的角度。<br />
<br />
由于矩阵描述角度过于抽象，人类又发明了3个值的优拉角（Euler）。可优拉角是个很不负责任的家伙，旋转圈数和旋转顺序完全不做区分。三维动画师最厌恶的情况之一&lsquo;万向锁（Gimbal Lock）&rsquo;就是这个家伙的问题。按不同轴以优拉角旋转几次后，出现x,y,z三个轴完全变成同向的情况，也就是说，优拉角很容易出现旋转到最后只剩一个方向可以旋转的情况，这就是恐怖的&lsquo;万向锁&rsquo;。<br />
<br />
后来，聪明的爱尔兰数学家发明了我们今天要研究的四元数（Quaternion），这就是迄今为止描述三维空间旋转相对完美的方案。<br />
<br />
四元数和矩阵一样，不满足乘法交换率，也就是说，A*B不等于B*A。四元数之所以可以明确地表述三维旋转，是因为他实际上是一种&lsquo;四维&rsquo;的算法。这里的&lsquo;四维&rsquo;是数学上的使用，不需要去想象什么是四维的世界=_=,只是多一条轴，多一个参数而已。<br />
<br />
<br />
我们主要介绍PV3d里Quaternion常用的几个方法和其用法，不会涉及过深的数学知识，所以不用担心。Quaternion类位置在org-papervision-core-math包里。<br />
<br />
<br />
<br />
//构造四元数需要4个值（人家名字就叫4元嘛=_=）,x,y,z是个三维向量，表示&lsquo;任意轴&rsquo;，w是个标量，表示旋转度数。这就是几乎完美的角度旋转。<br />
四元数之所以不是&lsquo;绝对完美&rsquo;，是因为插值的时候过渡速率不恒定，且很难解决。不过这比起&lsquo;恐怖万向锁&rsquo;已经是很小的问题。</p>
<div id="index2"><br />
public function Quaternion( x:Number = 0, y:Number = 0, z:Number = 0, w:Number = 1 )</div>
<p><br />
<br />
<br />
//下面两个个分别是&lsquo;从优拉角换算出四元数&rsquo;和&lsquo;从矩阵换算出四元数&rsquo;。这是两个非常常用的方法，只要已知一个物体的优拉角或矩阵，即可生成对应的四元数。<br />
Pv3d里任何DisplayObject3D的tranform这个属性就是变换他的矩阵，由这个矩阵就能得到目前旋转的四元数。（我们研究所的Flab摄像机旋转就用到了这些方法）</p>
<div id="index2"><br />
public static function createFromEuler( ax:Number, ay:Number, az:Number, useDegrees:Boolean = false )<br />
public static function createFromMatrix( matrix:Matrix3D )</div>
<p><br />
<br />
<br />
//和上面的刚好反向，分别是&lsquo;得到已知四元数的优拉角&rsquo;和&lsquo;得到已知四元数的矩阵&rsquo;</p>
<div id="index2"><br />
public function toEuler()<br />
public function get matrix()</div>
<p><br />
<br />
<br />
//插值是四元数最重要的用处之一，slerp方法的参数中，qa为开始的旋转位置的四元数，qb为结束的旋转位置四元数，apha可以看成一个插值的位置的比例，数值在0-1之间。</p>
<div id="index2"><br />
public static function slerp( qa:Quaternion, qb:Quaternion, alpha:Number )</div>
<p><br />
<br />
<strong>完美旋转的思路</strong>是这样的：<br />
我们必须要首先知道我们的开始位置和结束位置，结束位置很多情况用一个DisplayObject3D虚拟，我们可以用它的.tranform（是个矩阵值），变换成一个四元数<br />
知道两头的四元数，我们只需要每祯增加alpha值（从0-1），即可在这两个四元数之间插入任意多的过渡帧的四元数。<br />
然后将每祯的这个四元数反向为矩阵，在通过矩阵相乘目前物体的位置，即可得到物体每祯的新位置。<br />
<br />
下面这些都是四元数的基本运算（一般使用没必要掌握），维基词典可以了解&lsquo;四元数&rsquo;更专业的解释。<br />
<a class="s2" href="http://zh.wikipedia.org/w/index.php?title=%E5%9B%9B%E5%85%83%E6%95%B8&amp;variant=zh-cn#.E5.8A.A0.E3.80.81.E4.B9.98.E5.92.8C.E4.B8.80.E8.88.AC.E5.87.BD.E6.95.B8" target="_blank">维基词典-四元数</a>（会打开新窗口）<br />
<br />
//求模，四元数到原点的距离，简单的说就是长度<br />
public function get modulo()<br />
<br />
//共轨</p>
<div id="index2">public static function conjugate( a:Quaternion )</div>
<p><br />
//点乘</p>
<div id="index2">public static function dot( a:Quaternion, b:Quaternion )</div>
<p><br />
//叉称<br />
public static function multiply( a:Quaternion, b:Quaternion )<br />
<br />
//求差<br />
public static function sub(a:Quaternion, b:Quaternion)<br />
<br />
//求和<br />
public static function add(a:Quaternion, b:Quaternion)<br />
<br />
<br />
From:<a target="_blank" href="http://Flab3D.com">Flab3D.com</a></p>
<p>&nbsp;</p>]]></description><wfw:commentRss><![CDATA[http://www.conanlwl.net/Feed/Comment/168.aspx]]></wfw:commentRss></item><item><title><![CDATA[[转]图形学原理 矩阵变换]]></title><link><![CDATA[http://www.conanlwl.net/2009/05/14/zhuan+tu+xing+xue+yuan+li+ju+zhen+bian+huan.aspx]]></link><category><![CDATA[Papervision3D]]></category><author><![CDATA[Conanlwl]]></author><pubDate>Thu, 14 May 2009 18:09:05 GMT</pubDate><description><![CDATA[<p>空间中的某个点（x,y,z）的任何移动，旋转，缩放的变换，都是用这个点乘以某个一个矩阵而得到。那么模型是由一个个(x,y,z)的点组成，模型整个要变换，就是让每个点乘以某个矩阵。<br />
这是三维引擎开发，和引擎代码阅读的必备的基础常识。<br />
由于（x,y,z）乘以3*3矩阵可以达到旋转和缩放的目的，但是无法表示移动，所以为了统一，我们通常是采用乘以一个4行4列的矩阵。也就是说所有变换方法，都是用如下公式：<br />
变换后点的（x&rsquo;,y&rsquo;,z&rsquo;）=原来的（x,y,z） 乘以 4*4矩阵M<br />
如果使用pv3d的数学类，写法如下：<br />
<br />
var 点:number3D=new Number3D(x的值,y的值,z的值); //原来的点<br />
var 数组:Array=[n11,n12,n13, 0,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; n21,n22,n23, 0,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; n31,n32,n33, 0,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; nx , ny, nz, 1]; //构造矩阵内每个值，需要一个数组，我们通常都是以这种格式书写<br />
var 矩阵: Matrix3D=new Matrix3D(数组); //构造矩阵<br />
Matrix3D.multiplyVector4x4(矩阵,点); //点的x,y,z数据直接就更新为相乘后的数据了。<br />
<br />
那么具体是用哪个矩阵M呢？下面我们就列出来：<br />
<br />
<strong>旋转</strong><br />
旋转在三维里应该是最麻烦的东西，因为人类对旋转的描述是很有限。光靠矩阵控制旋转很多情况是非常复杂和不形象的，所以我们还发明了优拉角和四元数这些对旋转的控制更优良的办法，这些我们以后会讲到。<br />
<br />
角度&theta;表示的是延某轴旋转的角度。<br />
下面三个矩阵分别表示了点绕x轴，y轴，z轴的旋转矩阵。</p>
<p><img alt="" src="/UserFiles/200905/1418113948.jpg" /></p>
<p><strong>移动<br />
</strong>从公式我们很容易能看出，第4行1，2，3列的数，分别控制着点在x,y,z方向上的移动。</p>
<p><img alt="" src="/UserFiles/200905/1418120247.jpg" /></p>
<p><strong>缩放<br />
</strong>从公式我们很容易能看出，对角线上的n11,n22,n33，分别控制着点在x,y,z方向上的缩放。</p>
<p><img alt="" src="/UserFiles/200905/1418122975.jpg" /></p>
<p>这些就是最简单的变换矩阵，熟悉了这些，我们就又向前迈进了一步。<br />
图形学应该是一个很有趣的东西，并非像很多学校和学生教授的的那种痛苦不堪的东西。其实道理非常简单，如果自己再具备一点编程知识，很容易就能做出自己的成像程序。</p>
<p>From:<a target="_blank" href="http://www.flab3d.com">Flab3D.com<br />
</a></p>]]></description><wfw:commentRss><![CDATA[http://www.conanlwl.net/Feed/Comment/167.aspx]]></wfw:commentRss></item><item><title><![CDATA[9.0.124后loadPolicyFile失效问题]]></title><link><![CDATA[http://www.conanlwl.net/2009/05/06/9+0+124+hou+loadPolicyFile+shi+xiao+wen+ti.aspx]]></link><category><![CDATA[ActionScript3]]></category><author><![CDATA[Conanlwl]]></author><pubDate>Wed, 06 May 2009 16:52:11 GMT</pubDate><description><![CDATA[<p>在9.0.124前..我们会使用Security.loadPolicyFile()的方法来加载非根目录下的跨域文件<br />
如Security.loadPolicyFile(&quot;<a href="http://www.conanlwl.n et/demo/crossdomain.xml">http://www.conanlwl.net/demo/crossdomain.xml</a>&quot;)<br />
可更新9.0.124后..使用还是会报跨域错误..<br />
这是由于9.0.124对安全策略作了一些更新..<br />
引用 <br />
在4月份的安全更新之前，crossdomain是可以放于任何位置的，只要在代码中指定Security.loadPolicyFile即可，当然，默认的会首先去找站点根目录下（对于tomcat来说就是root了）。<br />
不过在安全更新之后，flash的安全策略发生了一些变化。<br />
其 中一点就是，将策略文件控制类型由原来的ALL改为了MASTER，MASTER策略文件称为主策略文件，在4月份以前，基本上没人注意这个主策略文件， 和我们常用的策略文件有什么区别。主策略文件是置放在站点根目录下，对整个站点访问权限进行约束的策略文件。这个改变使得默认的必须在站点根目录下置放 crossdomain文件，即使你在自己的站点中需要crossdomain，也必须获得主策略文件的许可。<br />
如果这种限制，就要求一定有对服务器控制的能力，至少你要能在根目录放置文件。但是有些时候，没有这样的权限，因此，官方还提供了另一种做法，在后台代码级别允许提供策略文件来取代master策略。<br />
以.net为例<br />
String policyFile = &quot;....(省略)&quot;<br />
Response.AppendHeader(&quot;Content-Type&quot;, &quot;text/xml; charset=UTF-8&quot;);<br />
Response.AppendHeader(&quot;X-Permitted-Cross-Domain-Policies&quot;, &quot;all&quot;);<br />
Response.Write(policyFile);<br />
这种代码级别的做法就是，在loadPolicy时，reposonse中的header里加上(&quot;X-Permitted-Cross-Domain-Policies&quot;, &quot;all&quot;);然后再返回policyFile。<br />
PS:上面内容来源<a href="http://www.riachina.com">www.riachina.com</a>论坛中的cimmicola于一篇文章中的回复<br />
地址:http://www.riachina.com/showtopic-12813.aspx</p>
<p>按上面的方法..把原来的XML换成了由ASP提供,保存为crossdomain.aspview plaincopy to clipboardprint?</p>
<div style="border-right: #5c5c5c 1px solid; border-top: #5c5c5c 1px solid; border-left: #5c5c5c 1px solid; border-bottom: #5c5c5c 1px solid">
<pre class="vb:firstline[1]" name="code">&lt;%@LANGUAGE=&quot;JAVASCRIPT&quot; CODEPAGE=&quot;65001&quot;%&gt;   
&lt;%   
var policyFile = '&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;'  
policyFile += '&lt;cross-domain-policy&gt;'  
policyFile += '&lt;allow-access-from domain=&quot;*.l4cd.net&quot; /&gt;'  
policyFile += '&lt;/cross-domain-policy&gt;'  
Response.AddHeader(&quot;Content-Type&quot;, &quot;text/xml; charset=UTF-8&quot;);   
Response.AddHeader(&quot;X-Permitted-Cross-Domain-Policies&quot;, &quot;all&quot;);   
Response.Write(policyFile);   
%&gt;</pre>
<script type="text/javascript" src="/FCKeditor/editor/dialog/dp.syntaxhighlighter/scripts/shbrushvb.js"></script></div>
<p>&nbsp;Security.loadPolicyFile(&quot;<a href="http://www.conanlwl.net/demo/crossdomain.asp">http://www.conanlwl.net/demo/crossdomain.asp</a>&quot;)<br />
一切解决..</p>
<p>&nbsp;</p>
<p>From: <a href="http://www.l4cd.net">http://www.l4cd.net</a></p>]]></description><wfw:commentRss><![CDATA[http://www.conanlwl.net/Feed/Comment/166.aspx]]></wfw:commentRss></item><item><title><![CDATA[AS3实现频谱与波形图]]></title><link><![CDATA[http://www.conanlwl.net/2009/05/06/AS3+shi+xian+pin+pu+yu+bo+xing+tu.aspx]]></link><category><![CDATA[ActionScript3]]></category><author><![CDATA[Conanlwl]]></author><pubDate>Wed, 06 May 2009 11:09:56 GMT</pubDate><description><![CDATA[<p>AS3声音功能中最令人兴奋的新增功能之一,就是可以访问声音频谱数据.这在以往的版本中是比较难实现的,或者得借助第三方工具才能完成的,而现在,这些频谱功能给内建到SoundMixter类里的computeSpectrum().所以在编写频谱之前,我们先从AS3的帮助文档中来认识一下computeSpectrum()是什么东西.</p>
<p><a target="_blank" href="http://www.conanlwl.net/demo/Spectrum/musicplayer.swf"><font size="6"><strong>先浏览一下效果先,点击频谱可以切换效果</strong></font></a><strong><font color="#ff0000" size="4">&nbsp;(注意,浏览前,关掉或暂停其它FLASH的声音,如本页右侧的音乐播放器,computeSpectrum () 会捕捉到其它FLASH上的声音而导致沙箱安全冲突= =!)</font></strong></p>
<p>computeSpectrum () 方法&nbsp;&nbsp;</p>
<p>public static function computeSpectrum(outputArray:ByteArray, FFTMode:Boolean = false, stretchFactor:int = 0):void</p>
<p>获取当前声音波形的快照，并将其放在指定的 ByteArray 对象中。 这些值已设置为标准浮点值（范围为 -1.0 到 1.0）格式。新值覆盖了传递到 outputArray 参数的 ByteArray 对象。 创建的 ByteArray 对象的大小固定为 512 个浮点值，其中前 256 个值表示左声道，后 256 个值表示右声道。</p>
<p>参数&nbsp; outputArray:ByteArray &mdash; 用于保存与声音关联的值的 ByteArray 对象。 如果由于安全性限制 (areSoundsInaccessible == true) 而导致任何声音不可用，则 outputArray 对象将保持不变。 如果停止了所有声音，则用零填充 outputArray 对象。&nbsp; <br />
&nbsp; <br />
&nbsp;FFTMode:Boolean (default = false) &mdash; 一个用于指示是否首先对声音数据执行 Fourier 转换的布尔值。 将此参数设置为 true 会导致方法返回的是频谱而不是原始声音波形。 在频谱中，左侧呈现的是低频，右侧呈现的是高频。&nbsp; <br />
&nbsp; <br />
&nbsp;stretchFactor:int (default = 0) &mdash; 声音采样的分辨率。 如果将 stretchFactor 值设置为 0，则会按 44.1 KHz 对数据进行采样；如果值为 1，则按 22.05 KHz 对数据进行采样；如果值为 2，则按 11.025 KHz 对数据进行采样；依此类推。&nbsp;</p>
<p>所以我们只要建立一个字节数组,然后不断的通过该方法得到声音快照.然后通过图形运算,形象的描绘出一个阶梯状的频谱图,就是接着我要做的事情.</p>
<p>今天我要做的频谱效果呢,是从千千静听模仿过来的.&nbsp;如图.</p>
<p><img alt="" src="/UserFiles/200905/0600115150.jpg" /></p>
<p>可见,频谱中左侧呈现的是低频,首先要从computeSpectrum ()获得频谱的数据,就必须将第二个参数FFTMode设为true.当我们获得快照以后,字节数组的长度总是为2048,而它储存的是32位单精度浮点数据,也即一个数据占4个字节,2048的长度,实际上就是存了2048/4=512个浮点数据,(经实际试验:它的值在0~1.3之间,没有找到资料有明确介绍最大值的,所以我也只是自己在实际调试中得出来的,未必最大值就是1.3)所以如果我们想要通过ByteArray的<font face="Courier New">position来移动读取指针时,就必须以4的整数倍数为单位来移动.</font></p>
<p><font face="Courier New">在512个数据中,前256个是描述左声道的,而后256个是描述右声道的.而在每个声道的靠前的数字是描述低频的,靠后的数字是描述高频的.而接下来我要画的频谱,他并没有512条柱体.而只有64条柱体,所以呢.我的做法就是取左声道的连续的四个浮点数据加上右声道相应位置的四个连续的数据的总和再除于一个平均因数得出来的一个近似值来表示柱体的高度.</font></p>
<p>&nbsp;整个频谱是由一个一个的柱体来组成的,所以首先我们得先用一个类来定义这个柱体,那么柱体是如何运作的呢,其实很简单,它的主要任务就是只要他的高度不为0,他就不断的缩短,在缩短的过程中,频谱数据会命令他一个新的高度,如果新的高度比它现在要高,他就自动变为指定的高度,如果比现在还要短,则无视命令,然后就接着继续缩短,直到高度为0时就等待新的指令高度.而柱体上的小方块,它的运行方式也跟柱体差不多一样,只要它不在最低点,他就不断的下降(下降的速度比柱体缩短的慢),直到有一个比它所在的高度还要高的指令时它才变为新的高度,另外,它还会不断的与柱体做碰撞检测,永远保证方块是处于柱体之上的.最低也就是放在柱体的上面.以下就是通过这个原理所描述的柱体类</p>
<div class="source" style="color: #000000; font-family: '[object]','Lucida Console','Courier New','monospace'; background-color: #f9f7ed" jquery1241580445734="2">
<p><span style="font-weight: bold; color: #000080">import</span> <span style="color: #000000">flash.display.Sprite</span>;<br />
<span style="font-weight: bold; color: #000080">import</span> <span style="color: #000000">flash.utils.Timer</span>;<br />
<span style="font-weight: bold; color: #000080">import</span> <span style="color: #000000">flash.events.TimerEvent</span>;<br />
&nbsp;&nbsp;&nbsp; <br />
<br />
<span style="font-weight: bold; color: #000080">class</span> <span style="color: #000000">Rect</span> <span style="font-weight: bold; color: #000080">extends</span> <span style="color: #000000">Sprite</span><span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">private</span> <span style="font-weight: bold; color: #000080">var</span> s<span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Sprite</span>; <span style="color: #008800; font-style: italic">//柱状体</span><br />
&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">private</span> <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">z</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Sprite</span>; <span style="color: #008800; font-style: italic">//柱状体上的小方块</span><br />
&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">private</span> <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">timer</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Timer</span>;<br />
&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">private</span> <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">h</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Number</span>;<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">function </span><span style="color: #000000">Rect</span>(<span style="color: #000000">_width</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Number</span><span style="color: #000000">,</span><span style="color: #000000">_height</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Number</span><span style="color: #000000">,</span><span style="color: #000000">color</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">uint</span> <span style="color: #a61717; background-color: #e3d2d2">= 0xFFFFFF</span>)<span style="color: #a61717; background-color: #e3d2d2">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Sprite</span>();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #008800; font-style: italic">//画柱状体</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s<span style="color: #000000">.</span><span style="color: #ff0000">graphics</span><span style="color: #000000">.</span><span style="color: #ff0000">beginFill</span>(<span style="color: #000000">color</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s<span style="color: #000000">.</span><span style="color: #ff0000">graphics</span><span style="color: #000000">.</span><span style="color: #ff0000">drawRect</span>(<span style="color: #0000ff">0</span><span style="color: #000000">,</span><span style="color: #0000ff">0</span><span style="color: #000000">,</span><span style="color: #000000">_width</span><span style="color: #000000">,</span><span style="color: #000000">_height</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s<span style="color: #000000">.</span><span style="color: #ff0000">graphics</span><span style="color: #000000">.</span><span style="color: #ff0000">endFill</span>();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #008800; font-style: italic">//旋转180度柱体才会从上往下降</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s<span style="color: #000000">.</span><span style="color: #ff0000">rotation</span> <span style="color: #000000">=</span> <span style="color: #0000ff">180</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s<span style="color: #000000">.</span><span style="color: #ff0000">height</span> <span style="color: #000000">=</span> <span style="color: #0000ff">0</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s<span style="color: #000000">.</span><span style="color: #ff0000">y</span> <span style="color: #000000">=</span> <span style="color: #000000">_height</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">addChild</span>(s);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">h</span> <span style="color: #000000">=</span> <span style="color: #000000">_height</span><span style="color: #000000">;//</span><span style="color: #a61717; background-color: #e3d2d2">记录最高长度</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">zHeight</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Number</span> <span style="color: #000000">=</span> <span style="color: #0000ff">2</span><span style="color: #000000">;//</span><span style="color: #a61717; background-color: #e3d2d2">块状体高</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">z</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Sprite</span>();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">z</span><span style="color: #000000">.</span><span style="color: #ff0000">graphics</span><span style="color: #000000">.</span><span style="color: #ff0000">beginFill</span>(<span style="color: #0000ff">0x2</span><span style="color: #000000">AEAEB</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">z</span><span style="color: #000000">.</span><span style="color: #ff0000">graphics</span><span style="color: #000000">.</span><span style="color: #ff0000">drawRect</span>(<span style="color: #0000ff">0</span><span style="color: #000000">,</span><span style="color: #0000ff">0</span><span style="color: #000000">,</span><span style="color: #000000">_width</span><span style="color: #000000">,</span><span style="color: #000000">zHeight</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">z</span><span style="color: #000000">.</span><span style="color: #ff0000">graphics</span><span style="color: #000000">.</span><span style="color: #ff0000">endFill</span>();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">z</span><span style="color: #000000">.</span><span style="color: #ff0000">y</span> <span style="color: #000000">=</span> <span style="color: #000000">_height</span> <span style="color: #000000">-</span> <span style="color: #000000">zHeight</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">z</span><span style="color: #000000">.</span><span style="color: #ff0000">rotation</span> <span style="color: #000000">=</span> <span style="color: #0000ff">180</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">addChild</span>(<span style="color: #000000">z</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">timer</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Timer</span>(<span style="color: #0000ff">40</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">timer</span><span style="color: #000000">.</span><span style="color: #ff0000">addEventListener</span>(<span style="color: #000000">TimerEvent</span><span style="color: #000000">.</span><span style="color: #ff0000">TIMER</span><span style="color: #000000">,</span><span style="color: #000000">onTimer</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">timer</span><span style="color: #000000">.</span><span style="color: #ff0000">start</span>();<br />
&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span>&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">private</span> <span style="font-weight: bold; color: #000080">function </span><span style="color: #000000">onTimer</span>(<span style="color: #000000">e</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">TimerEvent</span><span style="color: #000000">):</span><span style="font-weight: bold; color: #000080">void</span><span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">if</span>(s<span style="color: #000000">.</span><span style="color: #ff0000">height</span> <span style="color: #000000">&gt;</span> <span style="color: #0000ff">0</span><span style="color: #000000">){</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">speed</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Number</span> <span style="color: #000000">=</span> <span style="color: #0000ff">0.02</span> <span style="color: #000000">*</span> <span style="color: #000000">h</span><span style="color: #000000">;//</span><span style="color: #a61717; background-color: #e3d2d2">柱状体下降的速度</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">if</span>(<span style="color: #000000">speed</span> <span style="color: #000000">&gt;</span> s<span style="color: #000000">.</span><span style="color: #ff0000">height</span>)s<span style="color: #000000">.</span><span style="color: #ff0000">height</span> <span style="color: #000000">=</span> <span style="color: #0000ff">0</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">else</span> s<span style="color: #000000">.</span><span style="color: #ff0000">height</span> <span style="color: #000000">-=</span> <span style="color: #000000">speed</span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">if</span>(<span style="color: #000000">z</span><span style="color: #000000">.</span><span style="color: #ff0000">y</span> <span style="color: #000000">+</span> <span style="color: #000000">z</span><span style="color: #000000">.</span><span style="color: #ff0000">height</span> <span style="color: #000000">&gt;=</span> <span style="color: #000000">h</span> <span style="color: #000000">-</span> s<span style="color: #000000">.</span><span style="color: #ff0000">height</span><span style="color: #000000">){</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">z</span><span style="color: #000000">.</span><span style="color: #ff0000">y</span> <span style="color: #000000">=</span> <span style="color: #000000">h</span> <span style="color: #000000">-</span> s<span style="color: #000000">.</span><span style="color: #ff0000">height</span> <span style="color: #000000">-</span> <span style="color: #000000">z</span><span style="color: #000000">.</span><span style="color: #ff0000">height</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">else</span><span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">zspeed</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Number</span> <span style="color: #000000">=</span> <span style="color: #0000ff">0.01</span> <span style="color: #000000">*</span> <span style="color: #000000">h</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">z</span><span style="color: #000000">.</span><span style="color: #ff0000">y</span> <span style="color: #000000">+=</span> <span style="color: #000000">zspeed</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; <span style="color: #008800; font-style: italic">//更新柱体的高度,仅只当设置的高度比当前的高度还要高的时候才更新.</span><br />
&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">function </span><span style="color: #000000">update</span>(<span style="color: #000000">percent</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Number</span><span style="color: #000000">):</span><span style="font-weight: bold; color: #000080">void</span><span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">if</span>(<span style="color: #000000">percent</span><span style="color: #000000">&gt;</span><span style="color: #0000ff">1.0</span>) <span style="color: #000000">percent</span> <span style="color: #000000">=</span> <span style="color: #0000ff">1.0</span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">if</span>(s<span style="color: #000000">.</span><span style="color: #ff0000">height</span> <span style="color: #000000">&lt;</span> <span style="color: #000000">h</span> <span style="color: #000000">*</span> <span style="color: #000000">percent</span><span style="color: #000000">){</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s<span style="color: #000000">.</span><span style="color: #ff0000">height</span> <span style="color: #000000">=</span> <span style="color: #000000">h</span> <span style="color: #000000">*</span> <span style="color: #000000">percent</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">if</span>(<span style="color: #000000">z</span><span style="color: #000000">.</span><span style="color: #ff0000">y</span> <span style="color: #000000">+</span> <span style="color: #000000">z</span><span style="color: #000000">.</span><span style="color: #ff0000">height</span> <span style="color: #000000">&gt;=</span> <span style="color: #000000">h</span> <span style="color: #000000">-</span> s<span style="color: #000000">.</span><span style="color: #ff0000">height</span><span style="color: #000000">){</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">z</span><span style="color: #000000">.</span><span style="color: #ff0000">y</span> <span style="color: #000000">=</span> <span style="color: #000000">h</span> <span style="color: #000000">-</span> s<span style="color: #000000">.</span><span style="color: #ff0000">height</span> <span style="color: #000000">-</span> <span style="color: #000000">z</span><span style="color: #000000">.</span><span style="color: #ff0000">height</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
<span style="color: #000000">}</span></p>
<p><span style="color: #000000">接下来我们就可以读取频谱数据来画频谱图了:</span></p>
<span style="color: #000000">
<div class="source" style="color: #000000; font-family: '[object]','Lucida Console','Courier New','monospace'; background-color: #f9f7ed" jquery1241581215390="2">
<p>&nbsp;</p>
<span style="color: #000000">
<div class="source" style="color: #000000; font-family: '[object]','Lucida Console','Courier New','monospace'; background-color: #f9f7ed" jquery1241594606968="2">
<p><span style="font-weight: bold; color: #000080">private</span> <span style="font-weight: bold; color: #000080">var</span> s<span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Sprite</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Sprite</span>();<br />
<span style="font-weight: bold; color: #000080">private</span> <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">Main</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Sprite</span> ;&nbsp;&nbsp;&nbsp; <br />
<span style="font-weight: bold; color: #000080">private</span> <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">spectrum</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">ByteArray</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">ByteArray</span>();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
<span style="font-weight: bold; color: #000080">private</span> <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">timer</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Timer</span>;<br />
<br />
<span style="font-weight: bold; color: #000080">private</span> <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">m_width</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Number</span>;<br />
<span style="font-weight: bold; color: #000080">private</span> <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">m_height</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Number</span>;<br />
<br />
<span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">function </span><span style="color: #000000">Spectrum</span>(<span style="color: #000000">_width</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Number</span> <span style="color: #a61717; background-color: #e3d2d2">= 200,</span><span style="color: #000000">_height</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Number</span> <span style="color: #a61717; background-color: #e3d2d2">= 100</span>)<br />
<span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp; <span style="color: #000000">addChild</span>(s);<br />
&nbsp;&nbsp;&nbsp; <span style="color: #000000">m_width</span> <span style="color: #000000">=</span> <span style="color: #000000">_width</span>;<br />
&nbsp;&nbsp;&nbsp; <span style="color: #000000">m_height</span> <span style="color: #000000">=</span> <span style="color: #000000">_height</span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; <span style="color: #000000">prismatical</span>(<span style="color: #000000">_width</span><span style="color: #000000">,</span><span style="color: #000000">_height</span>);<br />
<span style="color: #000000">}</span><br />
<br />
<span style="font-weight: bold; color: #000080">private</span> <span style="font-weight: bold; color: #000080">function </span><span style="color: #000000">prismatical</span>(<span style="color: #000000">_width</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Number</span><span style="color: #000000">,</span><span style="color: #000000">_height</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Number</span><span style="color: #000000">):</span><span style="font-weight: bold; color: #000080">void</span><span style="color: #000000">{</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; <span style="color: #000000">Main</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Sprite</span>();<br />
&nbsp;&nbsp;&nbsp; s<span style="color: #000000">.</span><span style="color: #ff0000">addChild</span>(<span style="color: #000000">Main</span>);<br />
&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">for</span>(<span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">i</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">uint</span> <span style="color: #000000">=</span> <span style="color: #0000ff">0</span>; <span style="color: #000000">i</span><span style="color: #000000">&lt;</span><span style="color: #0000ff">64</span> ; <span style="color: #000000">i</span><span style="color: #000000">++){</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">r</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Rect</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Rect</span>(<span style="color: #0000ff">5</span><span style="color: #000000">,</span><span style="color: #000000">_height</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">r</span><span style="color: #000000">.</span><span style="color: #ff0000">y</span> <span style="color: #000000">=</span> <span style="color: #0000ff">0</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">r</span><span style="color: #000000">.</span><span style="color: #ff0000">x</span> <span style="color: #000000">=</span> <span style="color: #0000ff">6</span> <span style="color: #000000">*</span> <span style="color: #000000">i</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">Main</span><span style="color: #000000">.</span><span style="color: #ff0000">addChild</span>(<span style="color: #000000">r</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">r</span><span style="color: #000000">.</span><span style="color: #ff0000">name</span> <span style="color: #000000">=</span> <span style="color: #0000ff">&quot;r_&quot;</span> <span style="color: #000000">+</span> <span style="color: #000000">i</span>;<br />
&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp; <span style="color: #000000">Main</span><span style="color: #000000">.</span><span style="color: #ff0000">width</span> <span style="color: #000000">=</span> <span style="color: #000000">_width</span>;<br />
<span style="color: #000000">&nbsp;&nbsp;&nbsp; timer</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Timer</span>(<span style="color: #0000ff">200</span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">if</span><span style="color: #000000">(!</span><span style="color: #000000">SoundMixer</span><span style="color: #000000">.</span><span style="color: #ff0000">areSoundsInaccessible</span><span style="color: #000000">()){</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">timer</span><span style="color: #000000">.</span><span style="color: #ff0000">addEventListener</span>(<span style="color: #000000">TimerEvent</span><span style="color: #000000">.</span><span style="color: #ff0000">TIMER</span><span style="color: #000000">,</span><span style="color: #000000">prismatical_update</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">timer</span><span style="color: #000000">.</span><span style="color: #ff0000">start</span>(); <br />
&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
<span style="color: #000000">}</span><br />
<br />
<span style="font-weight: bold; color: #000080">private</span> <span style="font-weight: bold; color: #000080">function </span><span style="color: #000000">prismatical_update</span>(<span style="color: #000000">e</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Event</span><span style="color: #000000">):</span><span style="font-weight: bold; color: #000080">void</span><span style="color: #000000">{</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; <span style="color: #000000">SoundMixer</span><span style="color: #000000">.</span><span style="color: #ff0000">computeSpectrum</span>(<span style="color: #000000">spectrum</span><span style="color: #000000">,</span><span style="font-weight: bold; color: #000080">true</span>);<br />
&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">for</span>(<span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">i</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">uint</span> <span style="color: #000000">=</span> <span style="color: #0000ff">0</span>; <span style="color: #000000">i</span> <span style="color: #000000">&lt;</span> <span style="color: #0000ff">64</span>; <span style="color: #000000">i</span><span style="color: #000000">++){</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">a</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Number</span> <span style="color: #000000">=</span> <span style="color: #0000ff">0.0</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">spectrum</span><span style="color: #000000">.</span><span style="color: #ff0000">position</span> <span style="color: #000000">=</span> <span style="color: #000000">i</span> <span style="color: #000000">*</span> <span style="color: #0000ff">16</span><span style="color: #000000">;//</span><span style="color: #a61717; background-color: #e3d2d2">将指针移到左声道的相应位置</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">a</span> <span style="color: #000000">=</span> <span style="color: #000000">spectrum</span><span style="color: #000000">.</span><span style="color: #ff0000">readFloat</span>() <span style="color: #000000">+</span> <span style="color: #000000">spectrum</span><span style="color: #000000">.</span><span style="color: #ff0000">readFloat</span>() <span style="color: #000000">+</span> <span style="color: #000000">spectrum</span><span style="color: #000000">.</span><span style="color: #ff0000">readFloat</span>() <span style="color: #000000">+</span> <span style="color: #000000">spectrum</span><span style="color: #000000">.</span><span style="color: #ff0000">readFloat</span><span style="color: #000000">();//</span><span style="color: #a61717; background-color: #e3d2d2">读取</span><span style="color: #0000ff">4</span><span style="color: #a61717; background-color: #e3d2d2">个连续的数据</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">spectrum</span><span style="color: #000000">.</span><span style="color: #ff0000">position</span> <span style="color: #000000">=</span> <span style="color: #0000ff">1024</span> <span style="color: #000000">+</span> <span style="color: #000000">i</span> <span style="color: #000000">*</span> <span style="color: #0000ff">16</span><span style="color: #000000">;//</span><span style="color: #a61717; background-color: #e3d2d2">将指针移到右声道的相应位置</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">a</span> <span style="color: #000000">+=</span> <span style="color: #000000">spectrum</span><span style="color: #000000">.</span><span style="color: #ff0000">readFloat</span>() <span style="color: #000000">+</span> <span style="color: #000000">spectrum</span><span style="color: #000000">.</span><span style="color: #ff0000">readFloat</span>() <span style="color: #000000">+</span> <span style="color: #000000">spectrum</span><span style="color: #000000">.</span><span style="color: #ff0000">readFloat</span>() <span style="color: #000000">+</span> <span style="color: #000000">spectrum</span><span style="color: #000000">.</span><span style="color: #ff0000">readFloat</span><span style="color: #000000">();//</span><span style="color: #a61717; background-color: #e3d2d2">读取</span><span style="color: #0000ff">4</span><span style="color: #a61717; background-color: #e3d2d2">个连续的数据</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">r</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Rect</span> <span style="color: #000000">=</span> <span style="color: #000000">Rect</span>(<span style="color: #000000">Main</span><span style="color: #000000">.</span><span style="color: #ff0000">getChildByName</span>(<span style="color: #0000ff">&quot;r_&quot;</span> <span style="color: #000000">+</span> <span style="color: #000000">i</span>));<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">r</span><span style="color: #000000">.</span><span style="color: #ff0000">update</span>(<span style="color: #000000">a</span> <span style="color: #0000ff">/ 6);//</span><span style="color: #a61717; background-color: #e3d2d2">更新柱体长度</span><span style="color: #000000">,</span><span style="color: #a61717; background-color: #e3d2d2">除以一个平均因数</span><span style="color: #000000">,</span><span style="color: #a61717; background-color: #e3d2d2">大家也许可以试着改一下</span><span style="color: #0000ff">6</span><span style="color: #a61717; background-color: #e3d2d2">为其它的数字试试</span><br />
&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
<span style="color: #000000">}</span></p>
</div>
</span>
<p><span style="color: #000000">至此阶梯频谱便已完成,看图</span>&nbsp;</p>
</div>
</span></div>
<p><img alt="" src="/UserFiles/200905/0611450248.jpg" /></p>
<p>接着模仿了千千静听上的另外一个波形图.</p>
<p><img alt="" src="/UserFiles/200905/0611461878.jpg" /></p>
<p>波形图的效果是我在网上的一个Blog上看到的,所以我就直接拿过来整合在一起了.原理什么的,可以直接上<a target="_blank" href="http://www.swfdong.com/blog/">闪客小东's Blog</a> 的<font size="2"><a target="_blank" href="http://www.swfdong.com/blog/article.asp?id=86">更炫的效果来了!AS3波形图教程&lt;二&gt;</a>去看吧.我就直接贴修改过的代码了.</font>&nbsp;</p>
<div class="source" style="color: #000000; font-family: '[object]','Lucida Console','Courier New','monospace'; background-color: #f9f7ed" jquery1241594682328="2"><span style="font-weight: bold; color: #000080">private</span> <span style="font-weight: bold; color: #000080">var</span> s<span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Sprite</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Sprite</span>();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">private</span> <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">Main</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Sprite</span> ;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">private</span> <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">spectrum</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">ByteArray</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">ByteArray</span>();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">private</span> <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">timer</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Timer</span>;<br />
<span style="font-weight: bold; color: #000080">private</span> <span style="font-weight: bold; color: #000080">function </span><span style="color: #000000">waveform</span>(<span style="color: #000000">_width</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Number</span><span style="color: #000000">,</span><span style="color: #000000">_height</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Number</span><span style="color: #000000">):</span><span style="font-weight: bold; color: #000080">void</span><span style="color: #000000">{</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">line</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Sprite</span><span style="color: #000000">=</span><span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Sprite</span>();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">bmpData</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">BitmapData</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">BitmapData</span>(<span style="color: #000000">_width</span><span style="color: #000000">,</span><span style="color: #000000">_height</span><span style="color: #000000">,</span><span style="font-weight: bold; color: #000080">true</span><span style="color: #000000">,</span><span style="color: #0000ff">0x000000</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">bmp</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Bitmap</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Bitmap</span>(<span style="color: #000000">bmpData</span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #008800; font-style: italic">//声明一个BlurFilter滤镜</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">blur</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">BlurFilter</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">BlurFilter</span>(<span style="color: #0000ff">7</span><span style="color: #000000">,</span><span style="color: #0000ff">7</span><span style="color: #000000">,</span><span style="color: #000000">BitmapFilterQuality</span><span style="color: #000000">.</span><span style="color: #ff0000">LOW</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> n<span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Number</span> <span style="color: #000000">=</span> <span style="color: #0000ff">0</span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">r</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Rectangle</span><span style="color: #000000">=</span><span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Rectangle</span>(<span style="color: #0000ff">0</span><span style="color: #000000">,</span><span style="color: #0000ff">0</span><span style="color: #000000">,</span><span style="color: #000000">_width</span><span style="color: #000000">,</span><span style="color: #000000">_height</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> p<span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Point</span><span style="color: #000000">=</span><span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Point</span>(<span style="color: #0000ff">0</span><span style="color: #000000">,</span><span style="color: #0000ff">0</span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">colorM</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">ColorMatrixFilter</span><span style="color: #000000">=</span><span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">ColorMatrixFilter</span><span style="color: #000000">([</span><span style="color: #0000ff">0.9</span><span style="color: #000000">,</span><span style="color: #0000ff">0</span><span style="color: #000000">,</span><span style="color: #0000ff">0</span><span style="color: #000000">,</span><span style="color: #0000ff">0</span><span style="color: #000000">,</span><span style="color: #0000ff">0</span><span style="color: #000000">,</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #0000ff">0</span><span style="color: #000000">,</span><span style="color: #0000ff">0.9</span><span style="color: #000000">,</span><span style="color: #0000ff">0</span><span style="color: #000000">,</span><span style="color: #0000ff">0</span><span style="color: #000000">,</span><span style="color: #0000ff">0</span><span style="color: #000000">,</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #0000ff">0</span><span style="color: #000000">,</span><span style="color: #0000ff">0</span><span style="color: #000000">,</span><span style="color: #0000ff">0.9</span><span style="color: #000000">,</span><span style="color: #0000ff">0</span><span style="color: #000000">,</span><span style="color: #0000ff">0</span><span style="color: #000000">,</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #0000ff">0</span><span style="color: #000000">,</span><span style="color: #0000ff">0</span><span style="color: #000000">,</span><span style="color: #0000ff">0</span><span style="color: #000000">,</span><span style="color: #0000ff">0.68</span><span style="color: #000000">,</span><span style="color: #0000ff">0</span><span style="color: #000000">,//</span><span style="color: #0000ff">0.68</span><span style="color: #a61717; background-color: #e3d2d2">是透明因数</span><span style="color: #000000">,</span><span style="color: #a61717; background-color: #e3d2d2">数值越小</span><span style="color: #000000">,</span><span style="color: #a61717; background-color: #e3d2d2">背景模糊效果淡化得越快</span><span style="color: #000000">,</span><span style="color: #a61717; background-color: #e3d2d2">可以试着设一下其它的值来测试更好的视觉效果</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">]);</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">Main</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Sprite</span>();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">Main</span><span style="color: #000000">.</span><span style="color: #ff0000">blendMode</span><span style="color: #000000">=</span><span style="color: #000000">BlendMode</span><span style="color: #000000">.</span><span style="color: #ff0000">ADD</span>;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s<span style="color: #000000">.</span><span style="color: #ff0000">addChild</span>(<span style="color: #000000">Main</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">Main</span><span style="color: #000000">.</span><span style="color: #ff0000">addChild</span>(<span style="color: #000000">bmp</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">Main</span><span style="color: #000000">.</span><span style="color: #ff0000">addChild</span>(<span style="color: #000000">line</span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">timer</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Timer</span>(<span style="color: #0000ff">80</span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">if</span><span style="color: #000000">(!</span><span style="color: #000000">SoundMixer</span><span style="color: #000000">.</span><span style="color: #ff0000">areSoundsInaccessible</span><span style="color: #000000">()){</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">timer</span><span style="color: #000000">.</span><span style="color: #ff0000">addEventListener</span>(<span style="color: #000000">TimerEvent</span><span style="color: #000000">.</span><span style="color: #ff0000">TIMER</span><span style="color: #000000">,</span><span style="color: #000000">waveform_update</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">timer</span><span style="color: #000000">.</span><span style="color: #ff0000">start</span>();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">function </span><span style="color: #000000">waveform_update</span>(<span style="color: #000000">e</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">TimerEvent</span><span style="color: #000000">):</span><span style="font-weight: bold; color: #000080">void</span><span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n <span style="color: #000000">=</span> <span style="color: #0000ff">0</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #008800; font-style: italic">//这里是为了每2次才执行一次滤镜而做的if,如果需要让原来的波形图消失的更慢就把2改成更大的数字</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">if</span>(<span style="color: #000000">timer</span><span style="color: #000000">.</span><span style="color: #ff0000">currentCount</span><span style="color: #000000">%</span><span style="color: #0000ff">2</span><span style="color: #000000">==</span><span style="color: #0000ff">0</span><span style="color: #000000">){</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #008800; font-style: italic">//将Main的内容绘制到bmpData&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">bmpData</span><span style="color: #000000">.</span><span style="color: #ff0000">draw</span>(<span style="color: #000000">Main</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #008800; font-style: italic">//应用滤镜</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">bmpData</span><span style="color: #000000">.</span><span style="color: #ff0000">applyFilter</span>(<span style="color: #000000">bmpData</span><span style="color: #000000">,</span><span style="color: #000000">r</span><span style="color: #000000">,</span>p<span style="color: #000000">,</span><span style="color: #000000">colorM</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">bmpData</span><span style="color: #000000">.</span><span style="color: #ff0000">applyFilter</span>(<span style="color: #000000">bmpData</span><span style="color: #000000">,</span><span style="color: #000000">r</span><span style="color: #000000">,</span>p<span style="color: #000000">,</span><span style="color: #000000">blur</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #008800; font-style: italic">//清除绘图</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">line</span><span style="color: #000000">.</span><span style="color: #ff0000">graphics</span><span style="color: #000000">.</span><span style="color: #ff0000">clear</span>();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #008800; font-style: italic">//设置线条样式,颜色湖蓝,宽度1,透明度100</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">line</span><span style="color: #000000">.</span><span style="color: #ff0000">graphics</span><span style="color: #000000">.</span><span style="color: #ff0000">lineStyle</span>(<span style="color: #0000ff">1</span><span style="color: #000000">,</span><span style="color: #0000ff">0x2</span><span style="color: #000000">AEAEB</span><span style="color: #000000">,</span><span style="color: #0000ff">100</span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">SoundMixer</span><span style="color: #000000">.</span><span style="color: #ff0000">computeSpectrum</span>(<span style="color: #000000">spectrum</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #008800; font-style: italic">//左声道</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">for</span>(<span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">i</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">uint</span><span style="color: #000000">=</span><span style="color: #0000ff">0</span>; <span style="color: #000000">i</span> <span style="color: #000000">&lt;</span> <span style="color: #0000ff">256</span>; <span style="color: #000000">i</span><span style="color: #000000">+=</span><span style="color: #0000ff">2</span><span style="color: #000000">){</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #008800; font-style: italic">//在ByteArray中读取一个32位的单精度浮点数(这个是livedoc上写的,实际就是把数据流读取成浮点数)</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n <span style="color: #000000">=</span> <span style="color: #000000">spectrum</span><span style="color: #000000">.</span><span style="color: #ff0000">readFloat</span>();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #008800; font-style: italic">//为了平滑,隔着读</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">spectrum</span><span style="color: #000000">.</span><span style="color: #ff0000">readFloat</span><span style="color: #000000">();//</span><span style="color: #000000">spectrum</span><span style="color: #000000">.</span><span style="color: #ff0000">position</span> <span style="color: #000000">+=</span> <span style="color: #0000ff">4</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #008800; font-style: italic">//这个实际作用是把n扩大一下</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #008800; font-style: italic">// n = n*_height;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #008800; font-style: italic">//如果i不为0</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">if</span>(<span style="color: #000000">i</span><span style="color: #000000">!=</span><span style="color: #0000ff">0</span><span style="color: #000000">){</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #008800; font-style: italic">//画波形图</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">line</span><span style="color: #000000">.</span><span style="color: #ff0000">graphics</span><span style="color: #000000">.</span><span style="color: #ff0000">lineTo</span>(<span style="color: #000000">i</span> <span style="color: #000000">*</span> <span style="color: #000000">_width</span> <span style="color: #0000ff">/ 256,_height * (n + 3)/</span> <span style="color: #0000ff">6</span> );<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><span style="font-weight: bold; color: #000080">else</span><span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #008800; font-style: italic">//移动&nbsp;&nbsp;&nbsp; </span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">line</span><span style="color: #000000">.</span><span style="color: #ff0000">graphics</span><span style="color: #000000">.</span><span style="color: #ff0000">moveTo</span>(<span style="color: #0000ff">0</span><span style="color: #000000">,</span><span style="color: #000000">_height</span> <span style="color: #000000">*</span> (n <span style="color: #000000">+</span> <span style="color: #0000ff">3</span><span style="color: #000000">)/</span> <span style="color: #0000ff">6</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #008800; font-style: italic">//右声道</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">for</span>(<span style="color: #000000">i</span><span style="color: #000000">=</span><span style="color: #0000ff">0</span>; <span style="color: #000000">i</span> <span style="color: #000000">&lt;</span> <span style="color: #0000ff">256</span>; <span style="color: #000000">i</span><span style="color: #000000">+=</span><span style="color: #0000ff">2</span><span style="color: #000000">){</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n <span style="color: #000000">=</span> <span style="color: #000000">spectrum</span><span style="color: #000000">.</span><span style="color: #ff0000">readFloat</span>();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">spectrum</span><span style="color: #000000">.</span><span style="color: #ff0000">readFloat</span><span style="color: #000000">();//</span><span style="color: #000000">spectrum</span><span style="color: #000000">.</span><span style="color: #ff0000">position</span> <span style="color: #000000">+=</span> <span style="color: #0000ff">4</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">if</span>(<span style="color: #000000">i</span><span style="color: #000000">!=</span><span style="color: #0000ff">0</span><span style="color: #000000">){</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">line</span><span style="color: #000000">.</span><span style="color: #ff0000">graphics</span><span style="color: #000000">.</span><span style="color: #ff0000">lineTo</span>(<span style="color: #000000">i</span> <span style="color: #000000">*</span> <span style="color: #000000">_width</span> <span style="color: #0000ff">/ 256,_height * (n + 3) /</span> <span style="color: #0000ff">6</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><span style="font-weight: bold; color: #000080">else</span><span style="color: #000000">{</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">line</span><span style="color: #000000">.</span><span style="color: #ff0000">graphics</span><span style="color: #000000">.</span><span style="color: #ff0000">moveTo</span>(<span style="color: #0000ff">0</span><span style="color: #000000">,</span><span style="color: #000000">_height</span> <span style="color: #000000">*</span> (n <span style="color: #000000">+</span> <span style="color: #0000ff">3</span><span style="color: #000000">)/</span> <span style="color: #0000ff">6</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span></div>
<p><img alt="" src="/UserFiles/200905/0611595814.jpg" /><span id="fck_dom_range_start_1241582376078_903">&nbsp;</span></p>
<p>最后我偷懒,把这所有的代码都整合到一个类文件里面.....所以代码可能看起来有点吃力..<img alt="" src="/FCKeditor/editor/images/smiley/onion/18.gif" />&nbsp;</p>
<p>&nbsp;<a title="点击下载" target="_blank" href="/UserFiles/200905/0612172468.rar"><font size="6"><strong>点击下载类文件</strong></font></a></p>
<p>调用的代码:</p>
<div class="source" style="color: #000000; font-family: '[object]','Lucida Console','Courier New','monospace'; background-color: #f9f7ed" jquery1241583331937="2"><span style="font-weight: bold; color: #000080">package</span> <span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">import</span> <span style="color: #000000">flash.display.Sprite</span>;<br />
&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">import</span> <span style="color: #000000">flash.media.Sound</span>;<br />
&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">import</span> <span style="color: #000000">flash.net.URLRequest</span>;<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">import</span> <span style="color: #000000">net.conanlwl.</span><span style="color: #000000">*;</span><br />
<br />
&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">class</span> <span style="color: #000000">myTest</span> <span style="font-weight: bold; color: #000080">extends</span> <span style="color: #000000">Sprite</span><br />
&nbsp;&nbsp;&nbsp; <span style="color: #000000">{</span>&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">private</span> <span style="font-weight: bold; color: #000080">var</span> s<span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Spectrum</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">function </span><span style="color: #000000">myTest</span>()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">snd</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Sound</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Sound</span>(<span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">URLRequest</span>(<span style="color: #0000ff">&quot;http://www.conanlwl.net/demo/Spectrum/v3.mp3&quot;</span>));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">snd</span><span style="color: #000000">.</span><span style="color: #ff0000">play</span>();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">Spectrum</span>();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s<span style="color: #000000">.</span><span style="color: #ff0000">addEventListener</span>(<span style="color: #000000">MouseEvent</span><span style="color: #000000">.</span><span style="color: #ff0000">CLICK</span><span style="color: #000000">,</span><span style="color: #000000">onChangeSpectrumStyle</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">addChild</span>(s);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">private</span> <span style="font-weight: bold; color: #000080">function </span><span style="color: #000000">onChangeSpectrumStyle</span>(<span style="color: #000000">e</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">MouseEvent</span><span style="color: #000000">):</span><span style="font-weight: bold; color: #000080">void</span><span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">s</span><span style="color: #000000">.</span><span style="color: #ff0000">changeStyle</span>();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span>&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
<span style="color: #000000">}</span></div>]]></description><wfw:commentRss><![CDATA[http://www.conanlwl.net/Feed/Comment/165.aspx]]></wfw:commentRss></item><item><title><![CDATA[关于找茬游戏如何添加新图的方法]]></title><link><![CDATA[http://www.conanlwl.net/2009/05/05/guan+yu+zhao+cha+you+xi+ru+he+tian+jia+xin+tu+de+fang+fa.aspx]]></link><category><![CDATA[ActionScript3]]></category><author><![CDATA[Conanlwl]]></author><pubDate>Tue, 05 May 2009 17:44:09 GMT</pubDate><description><![CDATA[<p>这几天都有几个朋友都有问我的那个找茬DEMO(相关帖子:<a href="http://www.conanlwl.net/2009/02/25/da+jia+lai+zhao+cha+she+ji+si+lu+yu+yuan+ma.aspx"><strong><font color="#284c00" size="2">大家来找茬设计思路与源码</font></strong></a>)如果要添加新的找茬图,要如何加.....<img alt="" src="/FCKeditor/editor/images/smiley/onion/38.gif" />看来我的代码写得不好,没人看得懂.......我在这里就写个简单的教程,介绍一下如何添加新图吧...首先下载一个找茬的资源包;</p>
<p><a target="_blank" href="http://www.conanlwl.net/UserFiles/FindXsource.rar"><font color="#003300" size="6"><strong>游戏图片资源原文件下载(6.37MB)</strong></font></a></p>
<p>下载完解压以后,有四个文件,分别是gameData.as pic01_07.fla Music.fla 以及 图片元件.fla</p>
<p>首先我们必须先用PhotoShop或者其它作图软件,制作找茬的原图,制作找茬的图必须遵循以下的原则:</p>
<p>1.每张小图的尺寸都为371*300.<br />
2.图片的不同数必须在5个或5个以上.<br />
3.所有的不同处所在的矩形不能有相交,因为在玩家的眼里,两个不同处相交的话,他都会认为那是一个不同而已.<br />
4.修改所有的不同处以后,先记录下所有不同处的大小与位置,在游戏中,全部统一不同处为一个矩形,所以就算你左右两张图片不同的地方是一个圆形的区域,我们在记录时也要记录这个圆形所占的矩形区域.<br />
5.把修改后的图片,上下拼接起来,拼接后的图片尺寸为371*600,最后保存为PNG格式.</p>
<p>当按照上面的原则修改完图片并保存为PNG文件以后,我们使用FlashCS3以上版本打开资源文件里的Pic01_07.fla, 然后按菜单栏的 &quot;文件&quot;-&gt;&quot;导入&quot;-&gt;&quot;导入到库&quot;,选择刚做完的图,按&quot;打开&quot;就把刚做完的图片导入到库里了.</p>
<p align="center"><img alt="" src="/UserFiles/200905/0518102515.jpg" /><br />
图1</p>
<p>如图1所示,我导入了一张名为hello.png的图片,接着我们在hello.png上点击右键的&quot;链接&quot;,打开链接属性面板,在&quot;为ActionScript导出&quot;前打勾,系统会自动帮在&quot;在第一帧导出&quot;打勾,然后在类那里,我们自已取一个类名,如&quot;Kitty&quot;,基类保持默认不变,仍为&quot;flash.display.BitmapData&quot; ,如图2,设置完成点确定,会弹出一个警告(图3),无视点确定就行</p>
<p align="center"><img alt="" src="/UserFiles/200905/0518155161.jpg" /><br />
图2</p>
<p align="center"><img alt="" src="/UserFiles/200905/0518174815.jpg" /><br />
图3</p>
<p align="left">&nbsp;然后我们打开gameData.as文件.<br />
在className数组里添加一个我们刚新加图片命的类名kitty.添加后的数组为:</p>
<div class="source" style="color: #000000; font-family: '[object]','Lucida Console','Courier New','monospace'; background-color: #f9f7ed" jquery1241520583187="2"><span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">className</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Array</span> <span style="color: #000000">=</span> <span style="color: #000000">[</span><span style="color: #0000ff">&quot;pic01&quot;</span><span style="color: #000000">,</span><span style="color: #0000ff">&quot;pic02&quot;</span><span style="color: #000000">,</span><span style="color: #0000ff">&quot;pic03&quot;</span><span style="color: #000000">,</span><span style="color: #0000ff">&quot;pic04&quot;</span><span style="color: #000000">,</span><span style="color: #0000ff">&quot;pic05&quot;</span><span style="color: #000000">,</span><span style="color: #0000ff">&quot;pic06&quot;</span><span style="color: #000000">,</span><span style="color: #0000ff">&quot;pic07&quot;</span><span style="color: #000000">,</span><span style="color: #0000ff">&quot;Kitty&quot;</span><span style="color: #000000">];</span></div>
<p align="left">然后在arr07数组的下面,再多添加一个数组.这是一个二维数组.第二维的每一个数组就代表一个不同处,格式为[x,y,width,height],也就是刚才在作图原则中提到的第四点所记录下来的那些数据.例如:</p>
<p align="left"><span style="font-weight: bold; color: #000080">private</span> <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">arrKitty</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Array</span> <span style="color: #000000">=</span> <span style="color: #000000">[[</span><span style="color: #0000ff">67</span><span style="color: #000000">,</span><span style="color: #0000ff">69</span><span style="color: #000000">,</span><span style="color: #0000ff">76</span><span style="color: #000000">,</span><span style="color: #0000ff">2</span><span style="color: #000000">],[</span><span style="color: #0000ff">129</span><span style="color: #000000">,</span><span style="color: #0000ff">129</span><span style="color: #000000">,</span><span style="color: #0000ff">23</span><span style="color: #000000">,</span><span style="color: #0000ff">33</span><span style="color: #000000">],[</span><span style="color: #0000ff">53</span><span style="color: #000000">,</span><span style="color: #0000ff">70</span><span style="color: #000000">,</span><span style="color: #0000ff">29</span><span style="color: #000000">,</span><span style="color: #0000ff">48</span><span style="color: #000000">],[</span><span style="color: #0000ff">275</span><span style="color: #000000">,</span><span style="color: #0000ff">155</span><span style="color: #000000">,</span><span style="color: #0000ff">40</span><span style="color: #000000">,</span><span style="color: #0000ff">20</span><span style="color: #000000">],[</span><span style="color: #0000ff">281</span><span style="color: #000000">,</span><span style="color: #0000ff">223</span><span style="color: #000000">,</span><span style="color: #0000ff">37</span><span style="color: #000000">,</span><span style="color: #0000ff">26</span><span style="color: #000000">],[</span><span style="color: #0000ff">97</span><span style="color: #000000">,</span><span style="color: #0000ff">48</span><span style="color: #000000">,</span><span style="color: #0000ff">20</span><span style="color: #000000">,</span><span style="color: #0000ff">18</span><span style="color: #000000">],[</span><span style="color: #0000ff">86</span><span style="color: #000000">,</span><span style="color: #0000ff">184</span><span style="color: #000000">,</span><span style="color: #0000ff">17</span><span style="color: #000000">,</span><span style="color: #0000ff">14</span><span style="color: #000000">],[</span><span style="color: #0000ff">196</span><span style="color: #000000">,</span><span style="color: #0000ff">156</span><span style="color: #000000">,</span><span style="color: #0000ff">75</span><span style="color: #000000">,</span><span style="color: #0000ff">53</span><span style="color: #000000">]];</span></p>
<p align="left">最后就是把类名与新添加的数组添加到构造函数中的pos关联数组中,</p>
<p align="left">pos ={ pic01:arr01,pic02:arr02,pic03:arr03,pic04:arr04,pic05:arr05,pic06:arr06,pic07:arr07,Kitty:arrKitty};</p>
<p align="left">&nbsp;以下是添加新图后完整的gameData.as代码</p>
<p align="left"><span style="font-weight: bold; color: #000080">package</span><span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">class</span> <span style="color: #000000">gameData</span><span style="color: #000000">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">function </span><span style="color: #000000">gameData</span>()<span style="color: #a61717; background-color: #e3d2d2">{</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">pos</span> <span style="color: #000000">={</span> <span style="color: #000000">pic01</span><span style="color: #000000">:</span><span style="color: #000000">arr01</span><span style="color: #000000">,</span><span style="color: #000000">pic02</span><span style="color: #000000">:</span><span style="color: #000000">arr02</span><span style="color: #000000">,</span><span style="color: #000000">pic03</span><span style="color: #000000">:</span><span style="color: #000000">arr03</span><span style="color: #000000">,</span><span style="color: #000000">pic04</span><span style="color: #000000">:</span><span style="color: #000000">arr04</span><span style="color: #000000">,</span><span style="color: #000000">pic05</span><span style="color: #000000">:</span><span style="color: #000000">arr05</span><span style="color: #000000">,</span><span style="color: #000000">pic06</span><span style="color: #000000">:</span><span style="color: #000000">arr06</span><span style="color: #000000">,</span><span style="color: #000000">pic07</span><span style="color: #000000">:</span><span style="color: #000000">arr07</span><span style="color: #000000">,</span><span style="color: #000000">Kitty</span><span style="color: #000000">:</span><span style="color: #000000">arrKitty</span><span style="color: #000000">};</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">className</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Array</span> <span style="color: #000000">=</span> <span style="color: #000000">[</span><span style="color: #0000ff">&quot;pic01&quot;</span><span style="color: #000000">,</span><span style="color: #0000ff">&quot;pic02&quot;</span><span style="color: #000000">,</span><span style="color: #0000ff">&quot;pic03&quot;</span><span style="color: #000000">,</span><span style="color: #0000ff">&quot;pic04&quot;</span><span style="color: #000000">,</span><span style="color: #0000ff">&quot;pic05&quot;</span><span style="color: #000000">,</span><span style="color: #0000ff">&quot;pic06&quot;</span><span style="color: #000000">,</span><span style="color: #0000ff">&quot;pic07&quot;</span><span style="color: #000000">,</span><span style="color: #0000ff">&quot;Kitty&quot;</span><span style="color: #000000">];</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">private</span> <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">arr01</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Array</span> <span style="color: #000000">=</span> <span style="color: #000000">[[</span><span style="color: #0000ff">31</span><span style="color: #000000">,</span><span style="color: #0000ff">145</span><span style="color: #000000">,</span><span style="color: #0000ff">55</span><span style="color: #000000">,</span><span style="color: #0000ff">48</span><span style="color: #000000">],[</span><span style="color: #0000ff">90</span><span style="color: #000000">,</span><span style="color: #0000ff">76</span><span style="color: #000000">,</span><span style="color: #0000ff">55</span><span style="color: #000000">,</span><span style="color: #0000ff">79</span><span style="color: #000000">],[</span><span style="color: #0000ff">77</span><span style="color: #000000">,</span><span style="color: #0000ff">0</span><span style="color: #000000">,</span><span style="color: #0000ff">55</span><span style="color: #000000">,</span><span style="color: #0000ff">79</span><span style="color: #000000">],[</span><span style="color: #0000ff">258</span><span style="color: #000000">,</span><span style="color: #0000ff">187</span><span style="color: #000000">,</span><span style="color: #0000ff">48</span><span style="color: #000000">,</span><span style="color: #0000ff">96</span><span style="color: #000000">],[</span><span style="color: #0000ff">292</span><span style="color: #000000">,</span><span style="color: #0000ff">87</span><span style="color: #000000">,</span><span style="color: #0000ff">51</span><span style="color: #000000">,</span><span style="color: #0000ff">99</span><span style="color: #000000">],[</span><span style="color: #0000ff">121</span><span style="color: #000000">,</span><span style="color: #0000ff">206</span><span style="color: #000000">,</span><span style="color: #0000ff">13</span><span style="color: #000000">,</span><span style="color: #0000ff">61</span><span style="color: #000000">],[</span><span style="color: #0000ff">158</span><span style="color: #000000">,</span><span style="color: #0000ff">177</span><span style="color: #000000">,</span><span style="color: #0000ff">63</span><span style="color: #000000">,</span><span style="color: #0000ff">52</span><span style="color: #000000">],[</span><span style="color: #0000ff">278</span><span style="color: #000000">,</span><span style="color: #0000ff">36</span><span style="color: #000000">,</span><span style="color: #0000ff">30</span><span style="color: #000000">,</span><span style="color: #0000ff">35</span><span style="color: #000000">]];</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">private</span> <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">arr02</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Array</span> <span style="color: #000000">=</span> <span style="color: #000000">[[</span><span style="color: #0000ff">23</span><span style="color: #000000">,</span><span style="color: #0000ff">212</span><span style="color: #000000">,</span><span style="color: #0000ff">21</span><span style="color: #000000">,</span><span style="color: #0000ff">47</span><span style="color: #000000">],[</span><span style="color: #0000ff">139</span><span style="color: #000000">,</span><span style="color: #0000ff">132</span><span style="color: #000000">,</span><span style="color: #0000ff">51</span><span style="color: #000000">,</span><span style="color: #0000ff">37</span><span style="color: #000000">],[</span><span style="color: #0000ff">279</span><span style="color: #000000">,</span><span style="color: #0000ff">198</span><span style="color: #000000">,</span><span style="color: #0000ff">92</span><span style="color: #000000">,</span><span style="color: #0000ff">102</span><span style="color: #000000">],[</span><span style="color: #0000ff">262</span><span style="color: #000000">,</span><span style="color: #0000ff">143</span><span style="color: #000000">,</span><span style="color: #0000ff">62</span><span style="color: #000000">,</span><span style="color: #0000ff">33</span><span style="color: #000000">],[</span><span style="color: #0000ff">238</span><span style="color: #000000">,</span><span style="color: #0000ff">1</span><span style="color: #000000">,</span><span style="color: #0000ff">121</span><span style="color: #000000">,</span><span style="color: #0000ff">53</span><span style="color: #000000">],[</span><span style="color: #0000ff">154</span><span style="color: #000000">,</span><span style="color: #0000ff">242</span><span style="color: #000000">,</span><span style="color: #0000ff">91</span><span style="color: #000000">,</span><span style="color: #0000ff">19</span><span style="color: #000000">],[</span><span style="color: #0000ff">203</span><span style="color: #000000">,</span><span style="color: #0000ff">182</span><span style="color: #000000">,</span><span style="color: #0000ff">25</span><span style="color: #000000">,</span><span style="color: #0000ff">25</span><span style="color: #000000">],[</span><span style="color: #0000ff">97</span><span style="color: #000000">,</span><span style="color: #0000ff">137</span><span style="color: #000000">,</span><span style="color: #0000ff">34</span><span style="color: #000000">,</span><span style="color: #0000ff">57</span><span style="color: #000000">]];</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">private</span> <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">arr03</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Array</span> <span style="color: #000000">=</span> <span style="color: #000000">[[</span><span style="color: #0000ff">159</span><span style="color: #000000">,</span><span style="color: #0000ff">198</span><span style="color: #000000">,</span><span style="color: #0000ff">18</span><span style="color: #000000">,</span><span style="color: #0000ff">46</span><span style="color: #000000">],[</span><span style="color: #0000ff">36</span><span style="color: #000000">,</span><span style="color: #0000ff">272</span><span style="color: #000000">,</span><span style="color: #0000ff">88</span><span style="color: #000000">,</span><span style="color: #0000ff">12</span><span style="color: #000000">],[</span><span style="color: #0000ff">16</span><span style="color: #000000">,</span><span style="color: #0000ff">58</span><span style="color: #000000">,</span><span style="color: #0000ff">41</span><span style="color: #000000">,</span><span style="color: #0000ff">22</span><span style="color: #000000">],[</span><span style="color: #0000ff">222</span><span style="color: #000000">,</span><span style="color: #0000ff">203</span><span style="color: #000000">,</span><span style="color: #0000ff">20</span><span style="color: #000000">,</span><span style="color: #0000ff">26</span><span style="color: #000000">],[</span><span style="color: #0000ff">0</span><span style="color: #000000">,</span><span style="color: #0000ff">218</span><span style="color: #000000">,</span><span style="color: #0000ff">35</span><span style="color: #000000">,</span><span style="color: #0000ff">43</span><span style="color: #000000">],[</span><span style="color: #0000ff">237</span><span style="color: #000000">,</span><span style="color: #0000ff">4</span><span style="color: #000000">,</span><span style="color: #0000ff">14</span><span style="color: #000000">,</span><span style="color: #0000ff">15</span><span style="color: #000000">],[</span><span style="color: #0000ff">270</span><span style="color: #000000">,</span><span style="color: #0000ff">38</span><span style="color: #000000">,</span><span style="color: #0000ff">55</span><span style="color: #000000">,</span><span style="color: #0000ff">45</span><span style="color: #000000">],[</span><span style="color: #0000ff">283</span><span style="color: #000000">,</span><span style="color: #0000ff">265</span><span style="color: #000000">,</span><span style="color: #0000ff">88</span><span style="color: #000000">,</span><span style="color: #0000ff">35</span><span style="color: #000000">]];</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">private</span> <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">arr04</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Array</span> <span style="color: #000000">=</span> <span style="color: #000000">[[</span><span style="color: #0000ff">205</span><span style="color: #000000">,</span><span style="color: #0000ff">42</span><span style="color: #000000">,</span><span style="color: #0000ff">87</span><span style="color: #000000">,</span><span style="color: #0000ff">76</span><span style="color: #000000">],[</span><span style="color: #0000ff">264</span><span style="color: #000000">,</span><span style="color: #0000ff">185</span><span style="color: #000000">,</span><span style="color: #0000ff">107</span><span style="color: #000000">,</span><span style="color: #0000ff">115</span><span style="color: #000000">],[</span><span style="color: #0000ff">157</span><span style="color: #000000">,</span><span style="color: #0000ff">224</span><span style="color: #000000">,</span><span style="color: #0000ff">43</span><span style="color: #000000">,</span><span style="color: #0000ff">20</span><span style="color: #000000">],[</span><span style="color: #0000ff">26</span><span style="color: #000000">,</span><span style="color: #0000ff">142</span><span style="color: #000000">,</span><span style="color: #0000ff">38</span><span style="color: #000000">,</span><span style="color: #0000ff">40</span><span style="color: #000000">],[</span><span style="color: #0000ff">118</span><span style="color: #000000">,</span><span style="color: #0000ff">237</span><span style="color: #000000">,</span><span style="color: #0000ff">26</span><span style="color: #000000">,</span><span style="color: #0000ff">30</span><span style="color: #000000">],[</span><span style="color: #0000ff">0</span><span style="color: #000000">,</span><span style="color: #0000ff">24</span><span style="color: #000000">,</span><span style="color: #0000ff">148</span><span style="color: #000000">,</span><span style="color: #0000ff">45</span><span style="color: #000000">],[</span><span style="color: #0000ff">145</span><span style="color: #000000">,</span><span style="color: #0000ff">180</span><span style="color: #000000">,</span><span style="color: #0000ff">15</span><span style="color: #000000">,</span><span style="color: #0000ff">17</span><span style="color: #000000">],[</span><span style="color: #0000ff">169</span><span style="color: #000000">,</span><span style="color: #0000ff">146</span><span style="color: #000000">,</span><span style="color: #0000ff">31</span><span style="color: #000000">,</span><span style="color: #0000ff">22</span><span style="color: #000000">]];</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">private</span> <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">arr05</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Array</span> <span style="color: #000000">=</span> <span style="color: #000000">[[</span><span style="color: #0000ff">95</span><span style="color: #000000">,</span><span style="color: #0000ff">150</span><span style="color: #000000">,</span><span style="color: #0000ff">65</span><span style="color: #000000">,</span><span style="color: #0000ff">21</span><span style="color: #000000">],[</span><span style="color: #0000ff">196</span><span style="color: #000000">,</span><span style="color: #0000ff">177</span><span style="color: #000000">,</span><span style="color: #0000ff">27</span><span style="color: #000000">,</span><span style="color: #0000ff">25</span><span style="color: #000000">],[</span><span style="color: #0000ff">218</span><span style="color: #000000">,</span><span style="color: #0000ff">63</span><span style="color: #000000">,</span><span style="color: #0000ff">40</span><span style="color: #000000">,</span><span style="color: #0000ff">54</span><span style="color: #000000">],[</span><span style="color: #0000ff">247</span><span style="color: #000000">,</span><span style="color: #0000ff">282</span><span style="color: #000000">,</span><span style="color: #0000ff">11</span><span style="color: #000000">,</span><span style="color: #0000ff">15</span><span style="color: #000000">],[</span><span style="color: #0000ff">309</span><span style="color: #000000">,</span><span style="color: #0000ff">203</span><span style="color: #000000">,</span><span style="color: #0000ff">22</span><span style="color: #000000">,</span><span style="color: #0000ff">19</span><span style="color: #000000">],[</span><span style="color: #0000ff">142</span><span style="color: #000000">,</span><span style="color: #0000ff">228</span><span style="color: #000000">,</span><span style="color: #0000ff">42</span><span style="color: #000000">,</span><span style="color: #0000ff">41</span><span style="color: #000000">],[</span><span style="color: #0000ff">298</span><span style="color: #000000">,</span><span style="color: #0000ff">152</span><span style="color: #000000">,</span><span style="color: #0000ff">11</span><span style="color: #000000">,</span><span style="color: #0000ff">14</span><span style="color: #000000">],[</span><span style="color: #0000ff">115</span><span style="color: #000000">,</span><span style="color: #0000ff">72</span><span style="color: #000000">,</span><span style="color: #0000ff">39</span><span style="color: #000000">,</span><span style="color: #0000ff">45</span><span style="color: #000000">]];</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">private</span> <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">arr06</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Array</span> <span style="color: #000000">=</span> <span style="color: #000000">[[</span><span style="color: #0000ff">32</span><span style="color: #000000">,</span><span style="color: #0000ff">64</span><span style="color: #000000">,</span><span style="color: #0000ff">43</span><span style="color: #000000">,</span><span style="color: #0000ff">49</span><span style="color: #000000">],[</span><span style="color: #0000ff">92</span><span style="color: #000000">,</span><span style="color: #0000ff">44</span><span style="color: #000000">,</span><span style="color: #0000ff">28</span><span style="color: #000000">,</span><span style="color: #0000ff">30</span><span style="color: #000000">],[</span><span style="color: #0000ff">0</span><span style="color: #000000">,</span><span style="color: #0000ff">254</span><span style="color: #000000">,</span><span style="color: #0000ff">41</span><span style="color: #000000">,</span><span style="color: #0000ff">46</span><span style="color: #000000">],[</span><span style="color: #0000ff">43</span><span style="color: #000000">,</span><span style="color: #0000ff">178</span><span style="color: #000000">,</span><span style="color: #0000ff">33</span><span style="color: #000000">,</span><span style="color: #0000ff">105</span><span style="color: #000000">],[</span><span style="color: #0000ff">273</span><span style="color: #000000">,</span><span style="color: #0000ff">275</span><span style="color: #000000">,</span><span style="color: #0000ff">8</span><span style="color: #000000">,</span><span style="color: #0000ff">25</span><span style="color: #000000">],[</span><span style="color: #0000ff">160</span><span style="color: #000000">,</span><span style="color: #0000ff">41</span><span style="color: #000000">,</span><span style="color: #0000ff">12</span><span style="color: #000000">,</span><span style="color: #0000ff">25</span><span style="color: #000000">],[</span><span style="color: #0000ff">94</span><span style="color: #000000">,</span><span style="color: #0000ff">146</span><span style="color: #000000">,</span><span style="color: #0000ff">26</span><span style="color: #000000">,</span><span style="color: #0000ff">23</span><span style="color: #000000">],[</span><span style="color: #0000ff">177</span><span style="color: #000000">,</span><span style="color: #0000ff">217</span><span style="color: #000000">,</span><span style="color: #0000ff">16</span><span style="color: #000000">,</span><span style="color: #0000ff">15</span><span style="color: #000000">]];</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">private</span> <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">arr07</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Array</span> <span style="color: #000000">=</span> <span style="color: #000000">[[</span><span style="color: #0000ff">67</span><span style="color: #000000">,</span><span style="color: #0000ff">80</span><span style="color: #000000">,</span><span style="color: #0000ff">76</span><span style="color: #000000">,</span><span style="color: #0000ff">22</span><span style="color: #000000">],[</span><span style="color: #0000ff">129</span><span style="color: #000000">,</span><span style="color: #0000ff">129</span><span style="color: #000000">,</span><span style="color: #0000ff">23</span><span style="color: #000000">,</span><span style="color: #0000ff">33</span><span style="color: #000000">],[</span><span style="color: #0000ff">23</span><span style="color: #000000">,</span><span style="color: #0000ff">70</span><span style="color: #000000">,</span><span style="color: #0000ff">29</span><span style="color: #000000">,</span><span style="color: #0000ff">88</span><span style="color: #000000">],[</span><span style="color: #0000ff">275</span><span style="color: #000000">,</span><span style="color: #0000ff">155</span><span style="color: #000000">,</span><span style="color: #0000ff">40</span><span style="color: #000000">,</span><span style="color: #0000ff">20</span><span style="color: #000000">],[</span><span style="color: #0000ff">281</span><span style="color: #000000">,</span><span style="color: #0000ff">223</span><span style="color: #000000">,</span><span style="color: #0000ff">37</span><span style="color: #000000">,</span><span style="color: #0000ff">26</span><span style="color: #000000">],[</span><span style="color: #0000ff">97</span><span style="color: #000000">,</span><span style="color: #0000ff">48</span><span style="color: #000000">,</span><span style="color: #0000ff">20</span><span style="color: #000000">,</span><span style="color: #0000ff">18</span><span style="color: #000000">],[</span><span style="color: #0000ff">86</span><span style="color: #000000">,</span><span style="color: #0000ff">184</span><span style="color: #000000">,</span><span style="color: #0000ff">17</span><span style="color: #000000">,</span><span style="color: #0000ff">14</span><span style="color: #000000">],[</span><span style="color: #0000ff">196</span><span style="color: #000000">,</span><span style="color: #0000ff">56</span><span style="color: #000000">,</span><span style="color: #0000ff">175</span><span style="color: #000000">,</span><span style="color: #0000ff">53</span><span style="color: #000000">]];</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">private</span> <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">arrKitty</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Array</span> <span style="color: #000000">=</span> <span style="color: #000000">[[</span><span style="color: #0000ff">67</span><span style="color: #000000">,</span><span style="color: #0000ff">69</span><span style="color: #000000">,</span><span style="color: #0000ff">76</span><span style="color: #000000">,</span><span style="color: #0000ff">2</span><span style="color: #000000">],[</span><span style="color: #0000ff">129</span><span style="color: #000000">,</span><span style="color: #0000ff">129</span><span style="color: #000000">,</span><span style="color: #0000ff">23</span><span style="color: #000000">,</span><span style="color: #0000ff">33</span><span style="color: #000000">],[</span><span style="color: #0000ff">53</span><span style="color: #000000">,</span><span style="color: #0000ff">70</span><span style="color: #000000">,</span><span style="color: #0000ff">29</span><span style="color: #000000">,</span><span style="color: #0000ff">48</span><span style="color: #000000">],[</span><span style="color: #0000ff">275</span><span style="color: #000000">,</span><span style="color: #0000ff">155</span><span style="color: #000000">,</span><span style="color: #0000ff">40</span><span style="color: #000000">,</span><span style="color: #0000ff">20</span><span style="color: #000000">],[</span><span style="color: #0000ff">281</span><span style="color: #000000">,</span><span style="color: #0000ff">223</span><span style="color: #000000">,</span><span style="color: #0000ff">37</span><span style="color: #000000">,</span><span style="color: #0000ff">26</span><span style="color: #000000">],[</span><span style="color: #0000ff">97</span><span style="color: #000000">,</span><span style="color: #0000ff">48</span><span style="color: #000000">,</span><span style="color: #0000ff">20</span><span style="color: #000000">,</span><span style="color: #0000ff">18</span><span style="color: #000000">],[</span><span style="color: #0000ff">86</span><span style="color: #000000">,</span><span style="color: #0000ff">184</span><span style="color: #000000">,</span><span style="color: #0000ff">17</span><span style="color: #000000">,</span><span style="color: #0000ff">14</span><span style="color: #000000">],[</span><span style="color: #0000ff">196</span><span style="color: #000000">,</span><span style="color: #0000ff">156</span><span style="color: #000000">,</span><span style="color: #0000ff">75</span><span style="color: #000000">,</span><span style="color: #0000ff">53</span><span style="color: #000000">]];</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #000080">public</span> <span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">pos</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">Object</span>;<br />
&nbsp;&nbsp;&nbsp; <span style="color: #000000">}</span><br />
<span style="color: #000000">}</span></p>
<p align="left"><br />
最后我们再回到Pic01_07.fla,在菜单栏中的&quot;文件&quot;-&gt;&quot;导出&quot;-&gt;&quot;导出影片&quot;,命名为picture.swf,点击保存就可以了.然后把picture.swf覆盖到我们FindX游戏目录下的picture文件夹下的相同文件就可以了.</p>
<p align="left">其实大家可能会想gameData.as里的数据也给编译到了picture.swf里面去了吗?细心的朋友可能就会发现,我在pic01_07.fla文件的第一帧里我写了一句代码:</p>
<p align="left"><span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">g</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">gameData</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">gameData</span>();</p>
<p align="left">里面的import gameData;因为pic01_07.fla与gameData.as是在同一目录下,所以这一句其实是可以不写的,我多写了一句,也没删了.</p>
<p align="left">FLASH在编译的时候,为了节省空间,所以他不会把完全没有调用到的类编译到SWF文件里面去,所以如果没有<br />
<span style="font-weight: bold; color: #000080">var</span> <span style="color: #000000">g</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #000080">gameData</span> <span style="color: #000000">=</span> <span style="font-weight: bold; color: #000080">new</span> <span style="font-weight: bold; color: #000080">gameData</span>();这一句的话,gameData.as是不会给编译进SWF文件里的,所以我就随便声明了一下变量,(证明我路过,提高知名度..= =!),告诉FLASH,gameData.as我是用过的,你必须把它编译进去..至此我们就可以添加新的图片到游戏里面去了.</p>
<p align="left">如果你想修改背景音乐,可以打开Music.fla,在库列表里的ne.mp3上点击右键的&quot;属性&quot;,打开属性面板</p>
<p align="center"><img alt="" src="/UserFiles/200905/0519075351.jpg" /><br />
图4</p>
<p align="left">点击&quot;导入&quot;,选择新的声音文件,然后确定以后.再导出为SWF影片,并命名为Music.swf,然后覆盖到游戏目录里的Source文件夹下的同名文件就可以了.</p>
<p align="left">最后图片文件.fla是游戏界面的一些图片,你也可以根据自己的需要修改图片,注意每一张图片在右键的&quot;链接&quot;里都有对应的类名,不要搞错了就行了.最后导出为item.swf文件,并覆盖到游戏目录下的Source文件夹下的同名文件就可以了.</p>
<p align="left">至此,游戏的人机界面设计方面的就已经完成了..希望哪位朋友能帮我这个很囧的界面做个好看一点的.<img alt="" src="/FCKeditor/editor/images/smiley/onion/21.gif" /></p>]]></description><wfw:commentRss><![CDATA[http://www.conanlwl.net/Feed/Comment/164.aspx]]></wfw:commentRss></item><item><title><![CDATA[经典红白机游戏音乐]]></title><link><![CDATA[http://www.conanlwl.net/2009/04/15/jing+dian+hong+bai+ji+you+xi+yin+le.aspx]]></link><category><![CDATA[懒得分类]]></category><author><![CDATA[Conanlwl]]></author><pubDate>Wed, 15 Apr 2009 00:28:48 GMT</pubDate><description><![CDATA[<p><embed src="http://www.8box.cn/topics/mxplayer.swf?XmlUrl=http%3A%2F%2Fwww.8box.cn%2Ftopics%2Ffc-remix080303%2Ffc-remix.xml&amp;Auto=no&amp;MyColor=0xff9900" width="500" height="500" scale="ShowAll" loop="loop" menu="menu" wmode="Window" quality="1" type="application/x-shockwave-flash"></embed></p>
<p>&nbsp;</p>
<p>我想只有我们这些八零后的人玩FC玩得最多吧.90后的几乎都玩16位或者PS游戏去了,我只有我们才会时不时地去缅怀一下这些经典的红白机游戏吧.</p>
<p>在上面的这个FLASH里的收集的音乐,很多都不是游戏原声音乐,都是重奏版,这些音乐虽是出于FC游戏时代,但其音乐旋律绝不逊于当今的一些游戏.</p>
<p>&nbsp;</p>]]></description><wfw:commentRss><![CDATA[http://www.conanlwl.net/Feed/Comment/163.aspx]]></wfw:commentRss></item></channel></rss>