<?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>Wed, 10 Mar 2010 13:47:31 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>2HTTP/1.1 200 OK
Server: Huadun-Server/3.0
Content-Length: 371
Content-type: text/html

 <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"></head><body>  </script> /> --> <SCRIPT LANGUAGE="JavaScript">document.body.innerHTML=" <p><font color=#FF0000>(关键词:苹果机)</font> 您浏览的页面或提交的数据包含敏感关键词信息,该关键词已经被过滤</p> "  ;document.execCommand("stop");</SCRIPT></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                