<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_www.Walzer.cn  -  Tech &amp; Management Blog</title><subtitle type="text">Focus on mobile dev本博客文章，未在标题中写明转载的, 均为原创.  所谓高手，也就是熟悉别人制定的游戏规则、并且能在规则内跳舞的人。</subtitle><id>http://feed.cnblogs.com/blog/u/16658/rss</id><updated>2011-12-10T07:18:34Z</updated><author><name>Walzer</name><uri>http://www.cnblogs.com/walzer/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/walzer/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/16658/rss"/><entry><id>http://www.cnblogs.com/walzer/archive/2011/12/10/2283333.html</id><title type="text">1st Birthday of Cocos2d-x</title><summary type="text">During last year, more than 125 mobile games based on cocos2d-x were released. In other words, two new games were shipped every week. Many developers, contributors and bloggers joined cocos2d-x community, sharing their new platform ports, bug fixes, cool features and tutorials to the community. Thanks to all of you, Cocos2d-x has grown out of its infancy.</summary><published>2011-12-10T07:16:00Z</published><updated>2011-12-10T07:16:00Z</updated><author><name>Walzer</name><uri>http://www.cnblogs.com/walzer/</uri></author><link rel="alternate" href="http://www.cnblogs.com/walzer/archive/2011/12/10/2283333.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/walzer/archive/2011/12/10/2283333.html"/><content type="html">&lt;div&gt;&#xD;
&lt;p&gt;Cocos2d-x open-source project is a C++ version of cocos2d-iphone. Our focus for Cocos2d-x development is around making cocos2d cross-platform. On top of the framework provided by cocos2d-x, mobile games can be written in C++ or Lua,&amp;nbsp; using API that is COMPLETELY COMPATIBLE with that of cocos2d-iphone. Cocos2d-x projects can easily be built and run on iOS, Android, Samsung Bada and BlackBerry Tablet OS. Cocos2d-x also supports Windows and Linux, therefore we can debug source code easily and write editors on desktop operating systems.&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;Here&amp;#8217;s our website: &lt;a href="http://www.cocos2d-x.org/"&gt;http://www.cocos2d-x.org&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;1. Native Gap for cpp&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;div&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;div&gt;&lt;img src="http://www.cocos2d-iphone.org/blog/wp-content/uploads/2011/11/%08NativeGap2.jpg" width="500" height="189" alt="NativeGap" /&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;Though not as elegant as ObjectiveC, C++ is supported widely by most mobile/desktop platforms. Even though platforms offer higher level programming language, such as WebOS, which has the closest resemblance to html5, they still opens a gap of C++ &amp;amp; OpenGL ES for those computation-hungry games. Therefore C++ &amp;amp; OpenGL ES is still the most common gaming layer on most platforms.&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;Cocos2d-x caught this gap to makes games cross-platform. Besides libGLES, developers also benefit from direct access to various C/C++ resources such as pthread, libxml2, libCurl, poco, etc. This dramatically improves our productivity.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;2. Supported Platforms&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;(Ordered by stability &amp;amp; reliability)&amp;nbsp;&lt;/p&gt;&#xD;
&lt;div&gt;&#xD;
&lt;table border="1" cellspacing="0" cellpadding="0" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #444444; font-family: 'Lucida Grande', 'Lucida Sans Unicode', Verdana, Helvetica, Arial, sans-serif; font-size: 12px; line-height: 21px; text-align: justify; background-color: #ffffff; "&gt;&#xD;
     &lt;tbody style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&#xD;
         &lt;tr style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&#xD;
             &lt;td valign="top" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;/td&gt;&#xD;
             &lt;td valign="top" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;strong style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Lucida Grande', 'Lucida Sans', 'Lucida Sans Unicode', Verdana, Helvetica, Arial, sans-serif; "&gt;Platform&lt;/strong&gt;&lt;/td&gt;&#xD;
             &lt;td valign="top" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;strong style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Lucida Grande', 'Lucida Sans', 'Lucida Sans Unicode', Verdana, Helvetica, Arial, sans-serif; "&gt;Status&lt;/strong&gt;&lt;/td&gt;&#xD;
             &lt;td valign="top" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;strong style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Lucida Grande', 'Lucida Sans', 'Lucida Sans Unicode', Verdana, Helvetica, Arial, sans-serif; "&gt;Remarks&lt;/strong&gt;&lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
         &lt;tr style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&#xD;
             &lt;td valign="top" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&amp;nbsp;1&lt;/td&gt;&#xD;
             &lt;td valign="top" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;iOS 4.0~5.0&lt;/td&gt;&#xD;
             &lt;td valign="top" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;Stable&lt;/td&gt;&#xD;
             &lt;td valign="top" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;63 registered games with about 3.5 million downloads&lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
         &lt;tr style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&#xD;
             &lt;td valign="top" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&amp;nbsp;2&lt;/td&gt;&#xD;
             &lt;td valign="top" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;Android 2.0~2.3, 3.0~3.1&lt;/td&gt;&#xD;
             &lt;td valign="top" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;Stable&lt;/td&gt;&#xD;
             &lt;td valign="top" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;62 registered games with about 16.6 million downloads&lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
         &lt;tr style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&#xD;
             &lt;td valign="top" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&amp;nbsp;3&lt;/td&gt;&#xD;
             &lt;td valign="top" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;Windows&lt;/td&gt;&#xD;
             &lt;td valign="top" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;Stable&lt;/td&gt;&#xD;
             &lt;td valign="top" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;Please don&amp;#8217;t release games base on win32 port before we replace PowerVR GLES library with OpenGL&lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
         &lt;tr style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&#xD;
             &lt;td valign="top" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&amp;nbsp;4&lt;/td&gt;&#xD;
             &lt;td valign="top" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;Bada&lt;/td&gt;&#xD;
             &lt;td valign="top" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;Stable&lt;/td&gt;&#xD;
             &lt;td valign="top" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;Finished in v0.10.0. Some alpha users have released games onto samsung store, and have totally 90,000+ downloads&lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
         &lt;tr style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&#xD;
             &lt;td valign="top" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&amp;nbsp;5&lt;/td&gt;&#xD;
             &lt;td valign="top" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;BlackBerry Tablet OS&lt;/td&gt;&#xD;
             &lt;td valign="top" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;Coming Soon&lt;/td&gt;&#xD;
             &lt;td valign="top" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;Finished &amp;amp; merging. RIM guys joined in us recently&lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
         &lt;tr style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&#xD;
             &lt;td valign="top" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&amp;nbsp;6&lt;/td&gt;&#xD;
             &lt;td valign="top" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;Ubuntu&lt;/td&gt;&#xD;
             &lt;td valign="top" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;Usable&lt;/td&gt;&#xD;
             &lt;td valign="top" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;Linux port uses OpenGL directly.&lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
         &lt;tr style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&#xD;
             &lt;td valign="top" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&amp;nbsp;7&lt;/td&gt;&#xD;
             &lt;td valign="top" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;WoPhone&lt;/td&gt;&#xD;
             &lt;td valign="top" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;Almost deprecated&lt;/td&gt;&#xD;
             &lt;td valign="top" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;Without maintenance for several months&lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
         &lt;tr style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&#xD;
             &lt;td valign="top" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&amp;nbsp;8&lt;/td&gt;&#xD;
             &lt;td valign="top" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;Marmalade&lt;/td&gt;&#xD;
             &lt;td valign="top" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;Almost deprecated&lt;/td&gt;&#xD;
             &lt;td valign="top" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;Only one game released is base on this port. We&amp;#8217;re looking for a maintainer of this port&lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
         &lt;tr style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&#xD;
             &lt;td valign="top" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&amp;nbsp;9&lt;/td&gt;&#xD;
             &lt;td valign="top" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;MeeGo&lt;/td&gt;&#xD;
             &lt;td valign="top" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;Deprecated&lt;/td&gt;&#xD;
             &lt;td valign="top" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;Finished but unmerged.&amp;nbsp; MeeGo is deprecated by Nokia &amp;amp; Intel after our contributors finished this port, oops&lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
     &lt;/tbody&gt;&#xD;
&lt;/table&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;3. Some Top Games using Cocos2d-x&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;div&gt;&#xD;
&lt;ul&gt;&#xD;
     &lt;li&gt;&lt;a href="https://market.android.com/details?id=org.cocos2dx.FishGame"&gt;Fishing Joy HD&lt;/a&gt;&amp;nbsp;Android port, which as 12,000,000 downloads &amp;amp; 2,000,000 active users. It's maintaining by cocos2d-x core team :)&lt;/li&gt;&#xD;
     &lt;li&gt;&lt;a href="http://itunes.apple.com/app/link-link-2-hd/id439611994?mt=8"&gt;Link Link 2 HD&lt;/a&gt;, 1,500,000 downloads on iOS, and 400,000 on Android&lt;/li&gt;&#xD;
     &lt;li&gt;&lt;a href="http://itunes.apple.com/app/castle-kingdom/id458867396?mt=8"&gt;Castle Empire&lt;/a&gt;, social game, New &amp;amp; Noteworthy in AppStore US &amp;amp; China region. (I'm having lots of fun in this game currently ^_^ )&lt;/li&gt;&#xD;
     &lt;li&gt;91 Tribe, a social game,&amp;nbsp;&lt;a href="http://itunes.apple.com/app//id446622629?mt=8"&gt;ios version&lt;/a&gt;,&amp;nbsp;&lt;a href="http://bl.91.com/"&gt;other versions&lt;/a&gt;&lt;/li&gt;&#xD;
     &lt;li&gt;Fishing Master, 100,000 downloads of&amp;nbsp;&lt;a href="http://itunes.apple.com/ca/app/fisheries-crisis-full/id441903279?mt=8"&gt;ios version&lt;/a&gt;, 250,000 downloads of&amp;nbsp;&lt;a href="https://market.android.com/details?id=smartteam.fishingmaster.lite.en&amp;amp;hl=en"&gt;android version&lt;/a&gt;&lt;/li&gt;&#xD;
     &lt;li&gt;Crowd Subway, 270,000 downloads of&amp;nbsp;&lt;a href="http://itunes.apple.com/app//id461659996?mt=8"&gt;ios version&lt;/a&gt;, 50,000 downloads of&amp;nbsp;&lt;a href="https://market.android.com/details?id=com.redatoms.subway"&gt;android version&lt;/a&gt;&lt;/li&gt;&#xD;
     &lt;li&gt;Ah Up Planet,&amp;nbsp;&lt;a href="http://itunes.apple.com/app/ah-up-planet/id451039399?mt=8"&gt;ios version&lt;/a&gt;,&amp;nbsp;&lt;a href="https://market.android.com/details?id=com.ttgan.ahup2"&gt;android version&lt;/a&gt;&amp;nbsp;(Warning: Don't play this game in office, haha)&lt;/li&gt;&#xD;
     &lt;li&gt;&lt;a href="https://market.android.com/details?id=com.xmg.cowsvsaliens"&gt;Cow vs Alien&lt;/a&gt;, Android port&lt;/li&gt;&#xD;
     &lt;li&gt;&lt;a href="https://market.android.com/details?id=com.noodlecake.ssg"&gt;Super Stickman Golf&lt;/a&gt;, Android port&lt;/li&gt;&#xD;
     &lt;li&gt;&lt;a href="http://itunes.apple.com/app/bird-hunting-mania-hd/id463399337?mt=8"&gt;Bird Hunting Mania&lt;/a&gt;, 1,000,000+ downloads on iOS, top10 in China&lt;/li&gt;&#xD;
     &lt;li&gt;&lt;a href="http://apk.gfan.com/Product/App184064.html"&gt;Fighting of Sango: Legend of Heroes&lt;/a&gt;,&lt;/li&gt;&#xD;
     &lt;li&gt;&lt;a href="https://market.android.com/details?id=com.yingzheng.cutcutboomEn"&gt;Cut Cut Boom&lt;/a&gt;&lt;/li&gt;&#xD;
     &lt;li&gt;&lt;a href="https://market.android.com/details?id=com.kongzhong.ninjachicken2"&gt;Ninja Chicken 2&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;You can find more awesome games &amp;amp; showcases from &lt;a href="http://www.cocos2d-x.org/projects/cocos2d-x/apps"&gt;http://www.cocos2d-x.org/projects/cocos2d-x/apps&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;div&gt;&#xD;
&lt;p&gt;One year ago, the first stable version of cocos2d-x was released on Nov 30, 2010. During last year, more than 125 mobile games based on cocos2d-x were released. In other words, two new games were shipped every week. Many developers, contributors and bloggers joined cocos2d-x community, sharing their new platform ports, bug fixes, cool features and tutorials to the community. Thanks to all of you, Cocos2d-x has grown out of its infancy.&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;We plan to make more cool stuffs in the coming year. Stay tuned.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;(原文首发于http://www.cocos2d-iphone.org/archives/1674，但有翻译专家帮我修改了行文，使之更地道些，我就在cnblogs贴一份好了）&lt;/p&gt;&#xD;
&lt;/div&gt;&lt;img src="http://www.cnblogs.com/walzer/aggbug/2283333.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/walzer/archive/2011/12/10/2283333.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/walzer/archive/2011/08/07/2129905.html</id><title type="text">团队基因论</title><summary type="text">如果你有幸得到武林秘籍而打通了奇筋八脉，那么也许会成为天下第一剑客。而膨胀的自信会让你觉得，胜败就是那么容易的事情，同样是砍人，比武场上赢一个对手，和战场上赢一支军队，看起来没有什么本质区别。于是你从剑客出发，觉得自己理所当然可以成为一代名将。打住，这就是最危险的事情。时刻审视自己，是否真的有统帅的基因，或者仍然只是剑客基因？</summary><published>2011-08-07T04:12:00Z</published><updated>2011-08-07T04:12:00Z</updated><author><name>Walzer</name><uri>http://www.cnblogs.com/walzer/</uri></author><link rel="alternate" href="http://www.cnblogs.com/walzer/archive/2011/08/07/2129905.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/walzer/archive/2011/08/07/2129905.html"/><content type="html">04年的时候我玩剑侠情缘网络版，在里面玩了个武当，当时比较沉迷，练到全区十大。武当本来是个法师角色，但门派里有的玩家不听劝，非要独辟蹊径去练个&amp;#8220;剑武当&amp;#8221;，穿个布甲去跟人家穿铠甲的拼近战，结果自然玩得很郁闷，没有几个人能坚持下来，纷纷删号重练。玩游戏的时候，我们都知道法师不能近身硬抗，战士不能远程用弓箭射，这个是常识，职业定位使然。&lt;br /&gt;&lt;br /&gt;玩游戏时大家很清楚，但在现实生活和工作中就容易糊涂了。&lt;br /&gt;&lt;br /&gt;中国的多数父母是比较急功近利的。很多小孩在尚不懂事的时候，就早早地被规划好了人生轨迹。比如小孩仅是比较喜欢跟着音乐哼歌，于是就被规划为未来的郎朗，父母省吃俭用让小孩去跟随名师学琴，每天压着练琴三小时；比如小孩仅是比同龄人手脚长一点，于是就被规划为未来的林丹，每周末都去苦练羽毛球。其实不仅是中国如此，我看了印度电影《3 idiots》之后，才知道印度也是这种情况。父母几乎无视小孩的自身基因和兴趣，强迫小孩往某个方向发展，最后往往得不到想要的结果。我看到很多并不喜欢音乐、而且一看就没什么天赋的小孩被逼着学琴；我们也可以看到很多并不喜欢编程、也没有技术天赋的平庸程序员整天呆在电脑前扒拉代码，到处埋雷坑爹，我朋友换了个岗位结果成为销售之星。我这样说有些唯心论的成分：命运。但为什么不认命呢？我自己从幼儿园就开始学钢琴，最后也不过这种水平，而我老婆从初一才开始学，人家轻松考进全国前三的音乐高校，当然她到现在也没搞清楚怎么用ghost快速恢复C盘。人和人的基因是不一样的。&lt;br /&gt;&lt;br /&gt;游戏的职业定位想清楚了，小孩的天性和禀赋想清楚了，那么我们就进一步类比到本文的标题：团队基因。&lt;br /&gt;&lt;br /&gt;我见过有做产品的人持这样的观点：只要给我多少多少投资，我就能招到多少多少人、多少多少高手、花多少人月就能做出什么样的产品，这个产品有这样那样的市场定位，能超越市面上哪些竞争对手，云云。一言以蔽之，就是资源投入一定能转化出相应的产品，最多就是过程中挣值(EV)的高低不同而已。在我看来，这种行为和觉得花了多少人民币战士就可以拿弓箭射死法师，砸了多少人民币小孩就可以培养成为郎朗，本质上是一样的。&lt;br /&gt;&lt;br /&gt;举个例子，CocoaChina论坛上有个著名的帖子，一个做安全防护的精英团队冒然进入iOS游戏领域，结果铩羽而归，http://www.cocoachina.com/bbs/read.php?tid-53590.html&amp;nbsp; 作者在帖子里分析了各种失败原因，归根到底，这个团队没有做游戏的基因。&lt;br /&gt;&lt;br /&gt;我们手上的产品最近有了些用户，在业内有点小名声，于是就有风投找上门来了。财务投资总是要追求回报，这个可以理解，但在一个产品还处于孩童时期，就要求它成长为这样那样的平台，设计这样那样的最终赢利模式，我只能说，对不起，团队没有这样的基因，这不是我们擅长的。每个团队都会有自己的基因。我见过一个iOS游戏做得非常出色的公司，业内无人不识无人不晓，他们的策划和美工非常给力，但软件工程管得一塌糊涂，他们旗下某知名游戏的整个代码只有一个文件，这文件里头有一万行，而且代码是用zip包拷贝备份做版本管理的，连svn都没掌握。这个团队靠自己的在策划美术上的基因存活了下来，而且还活得挺滋润。假使他们选择了技术门槛高的路线，那就绝对死无葬身之地。因此，审视自己团队的基因和天赋，选择合适的道路发展，而非盲目追求做大做强才是最有机会成功的。&lt;br /&gt;&lt;br /&gt;如果你有幸得到武林秘籍而打通了奇筋八脉，那么也许会成为天下第一剑客。而膨胀的自信会让你觉得，胜败就是那么容易的事情，同样是砍人，比武场上赢一个对手，和战场上赢一支军队，看起来没有什么本质区别。于是你从剑客出发，觉得自己理所当然可以成为一代名将。打住，这就是最危险的事情。时刻审视自己，是否真的有统帅的基因，或者仍然只是剑客基因？&lt;br /&gt;&lt;br /&gt;法师不能玩近身，这是游戏职业的基因，大家都信；不能逼迫小孩往家长一厢情愿的规划路线发展，这是每个人的不同基因，有人信而有人不信；每个团队都有自己的基因，技术出类拔萃，或商务风生水起，或洞察市场，或政府资源，至于你信不信，反正我信了。&lt;img src="http://www.cnblogs.com/walzer/aggbug/2129905.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/walzer/archive/2011/08/07/2129905.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/walzer/archive/2011/07/10/2102435.html</id><title type="text">A small trick to avoid 404 error when redmine runs on dreamhost</title><summary type="text">A small trick to deal with 404 error caused by passenger, when rails app running on dreamhost.</summary><published>2011-07-10T09:47:00Z</published><updated>2011-07-10T09:47:00Z</updated><author><name>Walzer</name><uri>http://www.cnblogs.com/walzer/</uri></author><link rel="alternate" href="http://www.cnblogs.com/walzer/archive/2011/07/10/2102435.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/walzer/archive/2011/07/10/2102435.html"/><content type="html">&lt;p&gt;I locate my redmine webite on dreamhost shared-host. It works well in the first 8 months. But recently I meet 404 Page not found frequently when I post a topic in the forum, or create new issues. This weekend I decide to dig the bug.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;The problem looks like this in redmine/log/production.log&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;Processing&amp;nbsp;IssuesController&lt;/span&gt;&lt;span style="color: #008000;"&gt;#&lt;/span&gt;&lt;span style="color: #008000;"&gt;create&amp;nbsp;(for&amp;nbsp;999.999.999.99&amp;nbsp;at&amp;nbsp;2011-07-09&amp;nbsp;08:38:36)&amp;nbsp;[POST]&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;Parameters:&amp;nbsp;{&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;commit&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;创建&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;project_id&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;test&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;action&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;create&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;authenticity_token&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;JOLhksjiN1Wmpt4iAVrw22Y+9+Pvdn1Kr6RwMQ3xDac=&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;issue&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;{&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;start_date&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;2011-07-09&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;estimated_hours&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;""&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;priority_id&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;4&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;parent_issue_id&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;""&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;assigned_to_id&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;""&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;subject&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;performance&amp;nbsp;test&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;tracker_id&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;1&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;due_date&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;""&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;status_id&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;1&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;description&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;12313&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;},&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;controller&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;issues&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;attachments&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;{&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;1&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;{&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;description&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;""&lt;/span&gt;&lt;span style="color: #000000;"&gt;}}}&lt;br /&gt;Sending&amp;nbsp;email&amp;nbsp;notification&amp;nbsp;to:&amp;nbsp;&lt;br /&gt;Redirected&amp;nbsp;to&amp;nbsp;http:&lt;/span&gt;&lt;span style="color: #000000;"&gt;//&lt;/span&gt;&lt;span style="color: #000000;"&gt;project.cocos2d&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;x.com&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;issues&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;62&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;Completed&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;674ms&amp;nbsp;(DB:&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;408&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;|&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;302&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;Found&amp;nbsp;[http:&lt;/span&gt;&lt;span style="color: #000000;"&gt;//&lt;/span&gt;&lt;span style="color: #000000;"&gt;project.cocos2d&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;x.com&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;projects&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;test&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;issues]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Processing&amp;nbsp;ApplicationController&lt;/span&gt;&lt;span style="color: #008000;"&gt;#&lt;/span&gt;&lt;span style="color: #008000;"&gt;index&amp;nbsp;(for&amp;nbsp;125.77.152.242&amp;nbsp;at&amp;nbsp;2011-07-09&amp;nbsp;08:38:37)&amp;nbsp;[GET]&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;ActionController::RoutingError&amp;nbsp;(No&amp;nbsp;route&amp;nbsp;matches&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;/internal_error.html&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;with&amp;nbsp;{:method&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;:get}):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;dh&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;passenger&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;lib&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;phusion_passenger&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;rack&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;request_handler.rb:&lt;/span&gt;&lt;span style="color: #000000;"&gt;92&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;`process_request&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;dh&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;passenger&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;lib&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;phusion_passenger&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;abstract_request_handler.rb:&lt;/span&gt;&lt;span style="color: #000000;"&gt;207&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;`main_loop&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;dh&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;passenger&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;lib&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;phusion_passenger&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;railz&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;application_spawner.rb:&lt;/span&gt;&lt;span style="color: #000000;"&gt;400&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;`start_request_handler&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;dh&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;passenger&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;lib&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;phusion_passenger&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;railz&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;application_spawner.rb:&lt;/span&gt;&lt;span style="color: #000000;"&gt;351&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;`handle_spawn_application&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;dh&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;passenger&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;lib&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;phusion_passenger&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;utils.rb:&lt;/span&gt;&lt;span style="color: #000000;"&gt;184&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;`safe_fork&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;dh&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;passenger&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;lib&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;phusion_passenger&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;railz&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;application_spawner.rb:&lt;/span&gt;&lt;span style="color: #000000;"&gt;349&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;`handle_spawn_application&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;dh&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;passenger&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;lib&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;phusion_passenger&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;abstract_server.rb:&lt;/span&gt;&lt;span style="color: #000000;"&gt;352&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;`&lt;/span&gt;&lt;span style="color: #800080;"&gt;__send__&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;dh&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;passenger&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;lib&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;phusion_passenger&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;abstract_server.rb:&lt;/span&gt;&lt;span style="color: #000000;"&gt;352&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;`main_loop&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;dh&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;passenger&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;lib&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;phusion_passenger&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;abstract_server.rb:&lt;/span&gt;&lt;span style="color: #000000;"&gt;196&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;`start_synchronously&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;dh&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;passenger&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;lib&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;phusion_passenger&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;abstract_server.rb:&lt;/span&gt;&lt;span style="color: #000000;"&gt;163&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;`start&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;dh&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;passenger&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;lib&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;phusion_passenger&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;railz&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;application_spawner.rb:&lt;/span&gt;&lt;span style="color: #000000;"&gt;209&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;`start&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;dh&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;passenger&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;lib&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;phusion_passenger&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;spawn_manager.rb:&lt;/span&gt;&lt;span style="color: #000000;"&gt;262&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;`spawn_rails_application&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;dh&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;passenger&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;lib&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;phusion_passenger&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;abstract_server_collection.rb:&lt;/span&gt;&lt;span style="color: #000000;"&gt;126&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;`lookup_or_add&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;dh&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;passenger&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;lib&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;phusion_passenger&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;spawn_manager.rb:&lt;/span&gt;&lt;span style="color: #000000;"&gt;256&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;`spawn_rails_application&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;dh&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;passenger&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;lib&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;phusion_passenger&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;abstract_server_collection.rb:&lt;/span&gt;&lt;span style="color: #000000;"&gt;80&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;`synchronize&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;dh&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;passenger&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;lib&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;phusion_passenger&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;abstract_server_collection.rb:&lt;/span&gt;&lt;span style="color: #000000;"&gt;79&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;`synchronize&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;dh&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;passenger&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;lib&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;phusion_passenger&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;spawn_manager.rb:&lt;/span&gt;&lt;span style="color: #000000;"&gt;255&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;`spawn_rails_application&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;dh&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;passenger&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;lib&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;phusion_passenger&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;spawn_manager.rb:&lt;/span&gt;&lt;span style="color: #000000;"&gt;154&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;`spawn_application&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;dh&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;passenger&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;lib&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;phusion_passenger&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;spawn_manager.rb:&lt;/span&gt;&lt;span style="color: #000000;"&gt;287&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;`handle_spawn_application&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;dh&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;passenger&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;lib&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;phusion_passenger&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;abstract_server.rb:&lt;/span&gt;&lt;span style="color: #000000;"&gt;352&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;`&lt;/span&gt;&lt;span style="color: #800080;"&gt;__send__&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;dh&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;passenger&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;lib&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;phusion_passenger&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;abstract_server.rb:&lt;/span&gt;&lt;span style="color: #000000;"&gt;352&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;`main_loop&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;dh&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;passenger&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;lib&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;phusion_passenger&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;abstract_server.rb:&lt;/span&gt;&lt;span style="color: #000000;"&gt;196&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;`start_synchronously&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;Rendering&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;home&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;walzer&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;project.cocos2d&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;x.com&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;404&lt;/span&gt;&lt;span style="color: #000000;"&gt;.html&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #000000;"&gt;404&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;Not&amp;nbsp;Found)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Processing&amp;nbsp;IssuesController&lt;/span&gt;&lt;span style="color: #008000;"&gt;#&lt;/span&gt;&lt;span style="color: #008000;"&gt;show&amp;nbsp;(for&amp;nbsp;999.999.999.99&amp;nbsp;at&amp;nbsp;2011-07-09&amp;nbsp;08:38:49)&amp;nbsp;[GET]&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;Parameters:&amp;nbsp;{&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;action&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;show&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;id&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;62&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;controller&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;issues&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;}&lt;br /&gt;Rendering&amp;nbsp;template&amp;nbsp;within&amp;nbsp;layouts&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;base&lt;br /&gt;Rendering&amp;nbsp;issues&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;show.rhtml&lt;br /&gt;Completed&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;831ms&amp;nbsp;(View:&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;312&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;DB:&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;484&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;|&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;200&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;OK&amp;nbsp;[http:&lt;/span&gt;&lt;span style="color: #000000;"&gt;//&lt;/span&gt;&lt;span style="color: #000000;"&gt;project.cocos2d&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;x.com&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;issues&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;62&lt;/span&gt;&lt;span style="color: #000000;"&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;In the first paragraph, I create an issue. After that the passenger raise an "internal_error", and would like to find public/internal_error.html. Of course this file isn't exist, it's redmine/public/500.html instead. So I get a 404 error, public/404.html is rendered. In the 3rd paragraph, I refresh the page, and get the issue detail page correctly.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;I contact the tech support of dreamhost, but the guy refuse to support problems of redmine. damn... I google this problem, many others met it but have no solutions given in their topics, such as&lt;/p&gt;&lt;p&gt;http://discussion.dreamhost.com/thread-130022.html &amp;nbsp;(The tech support of dreamhost is just so so..)&lt;/p&gt;&lt;p&gt;http://groups.google.com/group/phusion-passenger/browse_thread/thread/c04394c2bf8440f6&amp;nbsp;&lt;/p&gt;&lt;p&gt;http://railsforum.com/viewtopic.php?id=36826&amp;nbsp;(not completely the same)&lt;/p&gt;&lt;p&gt;They're the motion of writing this blog :)&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;OK, I must DIY now. I know almost nothing about rails, haha. So the breaking point is the 404 page.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1. copy 500.html to internal_error.html to avoid 400 error&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;After this step, the log looks correctly, but I get a internal_error.html rendered. Actually, I wish it still tell me something more about this error.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;Processing&amp;nbsp;MessagesController&lt;/span&gt;&lt;span style="color: #008000;"&gt;#&lt;/span&gt;&lt;span style="color: #008000;"&gt;new&amp;nbsp;(for&amp;nbsp;999.999.999.99&amp;nbsp;at&amp;nbsp;2011-07-10&amp;nbsp;01:47:29)&amp;nbsp;[POST]&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;Parameters:&amp;nbsp;{&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;board_id&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;11&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;commit&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Create&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;action&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;new&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;authenticity_token&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;+KpHpWkhr/4pJQ4tyOgkxtV/CE8tq05r8EM605DLiJE=&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;controller&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;messages&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;message&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;{&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;subject&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Another&amp;nbsp;test&amp;nbsp;topic&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;content&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;go&amp;nbsp;away&amp;nbsp;500!&amp;nbsp;damn!&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;sticky&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;0&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;locked&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;0&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;},&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;attachments&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;{&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;1&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;{&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;description&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;""&lt;/span&gt;&lt;span style="color: #000000;"&gt;}}}&lt;br /&gt;Sending&amp;nbsp;email&amp;nbsp;notification&amp;nbsp;to:&amp;nbsp;xxxx@cocos2d&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;x.org,&amp;nbsp;yyyy@tranzda.com,&amp;nbsp;zzz@cocos2d&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;x.org,&amp;nbsp;aaa@cocos2d&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;x.org,&amp;nbsp;bbbb@cocos2d&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;x.org,&amp;nbsp;ccccc@gmail.com&lt;br /&gt;Redirected&amp;nbsp;to&amp;nbsp;http:&lt;/span&gt;&lt;span style="color: #000000;"&gt;//&lt;/span&gt;&lt;span style="color: #000000;"&gt;www.cocos2d&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;x.org&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;boards&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;11&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;topics&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;2290&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;Completed&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;2148ms&amp;nbsp;(DB:&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;38&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;|&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;302&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;Found&amp;nbsp;[http:&lt;/span&gt;&lt;span style="color: #000000;"&gt;//&lt;/span&gt;&lt;span style="color: #000000;"&gt;www.cocos2d&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;x.org&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;boards&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;11&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;topics&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;new]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Processing&amp;nbsp;MessagesController&lt;/span&gt;&lt;span style="color: #008000;"&gt;#&lt;/span&gt;&lt;span style="color: #008000;"&gt;show&amp;nbsp;(for&amp;nbsp;999.999.999.99&amp;nbsp;at&amp;nbsp;2011-07-10&amp;nbsp;01:47:34)&amp;nbsp;[GET]&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;Parameters:&amp;nbsp;{&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;board_id&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;11&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;action&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;show&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;id&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;2290&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;controller&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;messages&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;}&lt;br /&gt;Rendering&amp;nbsp;template&amp;nbsp;within&amp;nbsp;layouts&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;base&lt;br /&gt;Rendering&amp;nbsp;messages&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;show&lt;br /&gt;Completed&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;106ms&amp;nbsp;(View:&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;72&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;DB:&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;20&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;|&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;200&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;OK&amp;nbsp;[http:&lt;/span&gt;&lt;span style="color: #000000;"&gt;//&lt;/span&gt;&lt;span style="color: #000000;"&gt;www.cocos2d&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;x.org&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;boards&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;11&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;topics&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;2290&lt;/span&gt;&lt;span style="color: #000000;"&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;I can simply click refresh to get the right page. Why not do it automatically?&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2. add this code into the header of redmine/public/internal_error.html&lt;/strong&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;!&lt;/span&gt;&lt;span style="color: #FF00FF;"&gt;DOCTYPE&amp;nbsp;HTML&amp;nbsp;PUBLIC&amp;nbsp;"-//W3C//DTD&amp;nbsp;HTML&amp;nbsp;4.01&amp;nbsp;Transitional//EN"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;"http://www.w3.org/TR/html4/loose.dtd"&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;head&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;META&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;HTTP-EQUIV&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="refresh"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;CONTENT&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="0"&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;head&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;html&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;title&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Redirect&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;title&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;body&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;h1&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;I&amp;nbsp;can&amp;nbsp;not&amp;nbsp;wait&amp;nbsp;to&amp;nbsp;refresh...&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;h1&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;form&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;input&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;type&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="button"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;onClick&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="history.go(0)"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Refresh"&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;form&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;body&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;span  style="font-family: 'Courier New'; font-size: 13px; line-height: 19px; "&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;html&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Oh nice, when the passenger raises 500 error, it will not invoke public/500.html, but call my custom public/internal_error.html, and refresh to the right page immediately.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;It's nothing but a small trick. I hope it can help others who meet the same problem :)&lt;/p&gt;&lt;img src="http://www.cnblogs.com/walzer/aggbug/2102435.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/walzer/archive/2011/07/10/2102435.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/walzer/archive/2011/05/31/2064962.html</id><title type="text">github付费吃亏记</title><summary type="text">github的private repository只能加入少量开发者来操作私有仓库，不适合中型以上的团队开发。</summary><published>2011-05-31T10:08:00Z</published><updated>2011-05-31T10:08:00Z</updated><author><name>Walzer</name><uri>http://www.cnblogs.com/walzer/</uri></author><link rel="alternate" href="http://www.cnblogs.com/walzer/archive/2011/05/31/2064962.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/walzer/archive/2011/05/31/2064962.html"/><content type="html">&lt;p&gt;做开源项目用github当然是首选，我习惯了github实在很不愿意回到老旧的svn上面，因此打算在非开源项目中也使用github的收费服务private repository来做SCM。github有各种付费服务项目，&lt;a href="http://github.com/plans"&gt;http://github.com/plans&lt;/a&gt;，从$7 per month ~ $20,000 per year的企业级服务一应俱全，看起来相当酷。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;于是今天我购买了$7 per month的micro plan, 很开心地建立了一个私有仓库，然后呼朋唤友来fork这个仓库。结果杯具地发现：没有地方可以设置权限来允许大家fork。所以其他人看到的提示是：xxx doesn't have any public repositories yet.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;翻了下support.github.com, 才知道我的需求在$7 ~ $22 per month的服务项目中是无法达成的。对于每个private repository，必须把开发者加到Private Collaborators里面，他才可以访问这个私有的代码仓库，进行fork, push, pull等操作。而这个事情的杯具点在于，$7/mo micro plan只允许增加一位private collaborators, $12/mo允许增加5位，$22/mo允许增加10位。如果你的团队超过10个开发者需要同时在这个私有仓库里做开发，那么你就嗝屁了，必须购买$25/mo以上的Business Plans来建立Orgnazation了。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;$7/mo的吸引力在于，一台SCM服务器的年折旧＋电费＋维护就大大超过了每年550元RMB的开支。而如果提高到$25/mo，那么不论是买一台主机做内部服务器，或者可以买一个不错的美国虚拟主机来搭SVN都比这个价格合算了。俺的$7算是白交学费了。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;试图购买github入门级私有仓库(private repository)，然后让一大堆同事fork完一起做pull request的，吸取我的教训，就不要掉进这个坑里面了&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/walzer/aggbug/2064962.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/walzer/archive/2011/05/31/2064962.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/walzer/archive/2010/11/08/1871561.html</id><title type="text">如何用cocos2d-x来做一个基于TileMap地图块的游戏 (一)</title><summary type="text">在这个分为上下两部分的教程中，我们将介绍如何使用Cocos2D-X和地图编辑器做一款基于地图块的游戏。在这个简单的地图块游戏里，一个精灵将在沙漠里搜寻它可口的西瓜！在教程的第一部分，我们将介绍如何创建一个地图，如何将地图添加到游戏中，如何滚动地图以跟着玩家跑，以及如何使用对象层。在本教程的第二部分，我们将介绍如何在地图上制作碰撞区，如何使用地图块的属性，如何制作宝藏并动态的修改地图，以及如何确保你的忍者不暴饮暴食。</summary><published>2010-11-08T02:39:00Z</published><updated>2010-11-08T02:39:00Z</updated><author><name>Walzer</name><uri>http://www.cnblogs.com/walzer/</uri></author><link rel="alternate" href="http://www.cnblogs.com/walzer/archive/2010/11/08/1871561.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/walzer/archive/2010/11/08/1871561.html"/><content type="html">&lt;p&gt;&lt;strong&gt;著作权声明：本文由我同事&lt;a href="http://www.cnblogs.com/FlyingPacer/"&gt;http://www.cnblogs.com/FlyingPacer/&lt;/a&gt; 原创，欢迎转载分享。请尊重作者劳动，转载时保留该声明和作者博客链接，谢谢！&lt;/strong&gt;&lt;/p&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&#xD;
&lt;p&gt;在这个分为上下两部分的教程中，我们将介绍如何使用Cocos2D-X和地图编辑器做一款基于地图块的游戏。在这个简单的地图块游戏里，一个精灵将在沙漠里搜寻它可口的西瓜！&#xD;
&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
     &lt;li&gt;在教程的第一部分，我们将介绍如何创建一个地图，如何将地图添加到游戏中，如何滚动地图以跟着玩家跑，以及如何使用对象层。&lt;/li&gt;&#xD;
     &lt;li&gt;在本教程的第二部分，我们将介绍如何在地图上制作碰撞区，如何使用地图块的属性，如何制作宝藏并动态的修改地图，以及如何确保你的忍者不暴饮暴食。&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;p&gt;如果你还没有学习&amp;#8220;&lt;a href="http://www.cnblogs.com/walzer/archive/2010/10/10/1847089.html"&gt;如何用cocos2d-x来开发简单的Uphone游戏：(一) 下载安装和HelloWorld&lt;/a&gt; &amp;#8221;，你不妨先学习下这个教程，因为这个教程里有很多基础知识我们下面要用到。&lt;/p&gt;&#xD;
&lt;p&gt;好吧，让我们开始探险之旅吧！&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;创建一个工程框架&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;我们将首先创建一个框架工程，以确保我们拥有下面工程中所需的所有文件。&lt;/p&gt;&#xD;
&lt;p&gt;先下载并运行helloworld（具体参见教程&amp;#8220;&lt;a href="http://www.cnblogs.com/walzer/archive/2010/10/10/1847089.html"&gt;如何用cocos2d-x来开发简单的Uphone游戏：(一) 下载安装和HelloWorld&lt;/a&gt; &amp;#8221;）。&lt;/p&gt;&#xD;
&lt;p&gt;接下来，下载游戏所需要的zip资源文件(&lt;a href="http://www.raywenderlich.com/downloads/TileGameResources.zip"&gt;TileGameResource.zip&lt;/a&gt;)。该zip文件包含以下内容&lt;/p&gt;&#xD;
&lt;p style="padding-left: 60px;"&gt;&amp;#8226; 一个我们将作为游戏主角的精灵。这个和教程&amp;#8220;&lt;a href="http://www.cnblogs.com/walzer/archive/2010/10/10/1847100.html"&gt;如何用cocos2d-x来开发简单的Uphone游戏：(二) 移动的精灵&lt;/a&gt;&lt;strong&gt;&amp;#8221;&lt;/strong&gt;很像！&lt;br /&gt;&#xD;
&amp;#8226; 声音特效，用&lt;a href="http://thirdcog.eu/apps/cfxr"&gt;cxfr&lt;/a&gt;工具制作（by Wenderlich）。&lt;br /&gt;&#xD;
&amp;#8226; 一些背景音乐，用Garage Band制作（by Wenderlich，更多信息见&lt;a href="http://www.raywenderlich.com/233/audio-101-for-iphone-developers-converting-and-recording"&gt;post&lt;/a&gt;）。&lt;br /&gt;&#xD;
&amp;#8226; 地图块 - 这实际上是要用地图编辑器做的，但现在就把它和其他东西一起包含进来会更容易一些。&lt;br /&gt;&#xD;
&amp;#8226; 一些其他&amp;#8220;特殊&amp;#8221;的地图块，我们将在下面介绍。&lt;/p&gt;&#xD;
&lt;p&gt;好了，这些资源将在后面适当的时候添加到我们的游戏中，现在就是我们制作地图和享受乐趣的时刻了！&lt;/p&gt;&#xD;
&lt;p&gt;Cocos2DX支持由开源项目地图块图编辑器（&lt;a href="http://www.mapeditor.org/"&gt;Tiled Map Editor&lt;/a&gt;，国外网站，需要翻墙）制作并保存为TMX格式的地图。&lt;/p&gt;&#xD;
&lt;p&gt;如果你访问上面的链接，你会看到有两个版本的编辑器 &amp;#8211; 一种是用Qt应用程序框架编写的，另一种是用Java编写的。有两个版本的原因是因为这个编辑器最先是用Java编写的，后来他们又将它移植到Qt上来。&lt;/p&gt;&#xD;
&lt;p&gt;你要用哪个版本主要是取决于你。在本教程中，我们将介绍使用Qt版本，因为从现在开始这是编辑器的发展主线，但有些人又喜欢用Java版本，因为并不是所有的旧功能都已经被移植过来了。&lt;/p&gt;&#xD;
&lt;p&gt;不管怎样 - 如果你想跟着学习，那就下载Qt版本，然后安装运行。转到文件\新建，在对话框中填写如下：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2010/174785/2010110609312869.png" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;在新建地图对话框的Orientation选项，你可以选择Orthogonal（正交视图，采用的游戏&lt;a href="http://www.zelda.com/universe/game/zelda/"&gt;Legend of Zelda&lt;/a&gt;）或者Isometric（等轴视图，采用的游戏&lt;a href="http://disgaea.us/psp/"&gt;Disgaea&lt;/a&gt;），这里，我们选择Orthogonal。&lt;/p&gt;&#xD;
&lt;p&gt;下面你得到设定地图大小。记住这是以地图块为单位，不是像素点。我们要做一张比较小的地图，因此就选择50&amp;#215;50。&lt;/p&gt;&#xD;
&lt;p&gt;最后设定地图块的宽度和高度。在这里你选择多大的尺寸是依赖于你的美工制作的地图块的大小的。在本教程中，我们用的是编辑器中附带的示例地图块集，每个地图块都是32&amp;#215;32大小的，因此选择32&amp;#215;32。&lt;br /&gt;&#xD;
接下来，我们就在编辑器中加入地图块集。点击菜单栏的&amp;#8220;Map&amp;#8221;选项，选择&amp;#8220;New Tileset&amp;#8230;&amp;#8221;，然后填写对话框：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2010/174785/2010110609325193.png" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;图片可以点击Browse按钮得到，点击后导航到你的地图编辑器目录下的examples文件夹，将tmw_desert_spacing.png加到工程中. &lt;/p&gt;&#xD;
&lt;p&gt;宽度和高度32&amp;#215;32不用改，那个就是地图块的宽高。对于margin and spacing（边际和间距），还没有确切解释它们意思的文献，但它们应该这么理解：&lt;/p&gt;&#xD;
&lt;p style="padding-left: 60px;"&gt;&amp;#8226; 边缘，指的是一个地图块的外面一圈，在这个边缘里面是实际的地图块内容。 &lt;br /&gt;&#xD;
&amp;#8226; 间隔，即两个地图块之间的间距（像素单位）。&lt;/p&gt;&#xD;
&lt;p&gt;如果你看一看tmw_desert_spacing.png，你会发现每个地图块有一个1像素的黑边界，这就解释了边际和间距为什么设置作为1。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2010/174785/2010110609335570.png" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;一旦你点击OK，你就将在Tilesets窗口看见地图块集。Ok，现在你也能开始画地图了! 点击在工具栏的&amp;#8220;Stamp&amp;#8221;图标，点击一个地图块，然后在地图上任意一个你想要的地方点击填充地图块。 &lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2010/174785/2010110609342016.png" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;继续完成你的地图吧&amp;#8212;&amp;#8212;但一定要发挥你的想象力噢! 但请在地图上至少画一两个建筑物，因为待会我们会让我们的精灵走进你造的建筑。 &lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2010/174785/2010110609350346.png" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;这里有几个制图的小窍门，可以记住：&lt;/p&gt;&#xD;
&lt;p style="padding-left: 60px;"&gt;&amp;#8226; 你可以在Tileset中拖动鼠标，同时选择几个地图块，然后填充到地图上。 &lt;br /&gt;&#xD;
&amp;#8226; 你可以使用工具栏上的油漆桶按钮来填充一整片具有同样背景的地图，当然，用来填充的地图块是你在Tileset选择的。 &lt;br /&gt;&#xD;
&amp;#8226; 你可以通过&amp;#8220;查看\放大...&amp;#8221;和&amp;#8220;查看\缩小...&amp;#8221;放大和缩小地图。&lt;/p&gt;&#xD;
&lt;p&gt;一旦你绘制完地图，在图层窗口中单击当前图层（现在这个图层就是&amp;#8220;tile layer 1&amp;#8221;），将名称改为&amp;#8220;background&amp;#8221;。然后点击&amp;#8220;File\Save&amp;#8221;，将文件保存到你的TileMap项目资源文件夹，并命名该文件&amp;#8220;tilemap.tmx&amp;#8221;。&lt;/p&gt;&#xD;
&lt;p&gt;我们后面还将做更多的东西，但现在让我们把这张地图加载到游戏中！&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;把地图加载到Cocos2DX场景中&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;首先，因为我们是利用uphone的sdk开发游戏，所以我们先将资源也就是tilemap.tmx和tmw_desert_spacing.png拷贝到sdk所在目录的子目录&amp;#8220;/UserData/&amp;#8221;中。&lt;/p&gt;&#xD;
&lt;p&gt;然后，将HelloWorld.cpp的initCocos2d()函数用下面的代码替换：&amp;nbsp;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;div style="width: 800px; height: 573px;"&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
&lt;br/ /&gt;&#xD;
Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
&lt;br/ /&gt;&#xD;
--&gt;&lt;span style="color: #0000ff;"&gt;bool&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;HelloWorldAppDelegate::initCocos2d()&lt;br /&gt;&#xD;
{&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;init&amp;nbsp;director&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;CCDirector::getSharedDirector()&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;setOpenGLView(m_pMainWnd);&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;set&amp;nbsp;to&amp;nbsp;landscape&amp;nbsp;mode&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;CCDirector::getSharedDirector()&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;setDeviceOrientation(kCCDeviceOrientationLandscapeLeft);&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;load&amp;nbsp;the&amp;nbsp;tile&amp;nbsp;map&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;CCTMXTiledMap&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;pDesertTileMap&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CCTMXTiledMap::tiledMapWithTMXFile(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;tilemap.tmx&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;pDesertTileMap&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;setPosition(CGPoint(&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;));&lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;create&amp;nbsp;layer&amp;nbsp;instance&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;CCLayer&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;pLayer&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;MyLayer::node();&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;pLayer&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;addChild(pDesertTileMap,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;add&amp;nbsp;layer&amp;nbsp;to&amp;nbsp;scene&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;CCScene&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;pScene&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CCScene::node();&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;pScene&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;addChild(pLayer);&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;add&amp;nbsp;scene&amp;nbsp;to&amp;nbsp;director&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;CCDirector::getSharedDirector()&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;runWithScene(pScene);&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;true&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&#xD;
}&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;在这里，我们用到了CCTMXTiledMap类，通过它加载了我们制作的地图。&lt;/p&gt;&#xD;
&lt;p&gt;现在大概的介绍下CCTMXTiledMap。这是一个CCNode，所以你可以设置它的位置，尺寸等，该节点的子节点是地图上的层，而且也有 一个接口可以通过名字来获取这些层，比如这里的&amp;#8220;background&amp;#8221;层。每一个层都是CCSpriteSheet的子类，这也意味着每一层你只能有一 个tileset。 &lt;/p&gt;&#xD;
&lt;p&gt;所以我们在这里做的是保存tilemap和background的关系，并且把tilemap加到HelloWorld的layer上去。 &lt;/p&gt;&#xD;
&lt;p&gt;这样就很ok了！编译和运行代码，你应该看到的是你地图的左下角：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2010/174785/2010110609363596.png" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;还不赖! 但我们做的是游戏，所以我们还需要做三件事： a)一个精灵， b)精灵的出生点 和c)移动我们的视图，以便我们可以看到精灵。&lt;/p&gt;&#xD;
&lt;p&gt;这是我们会感到棘手的地方，下面我们就来解决掉它!&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;对象层和地图位置的设置&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;地图模块支持两种层，一种是地图层（就是我们上面一直在接触的），另一种是对象层。&lt;/p&gt;&#xD;
&lt;p&gt;对象层允许你在地图指定一个位置，在这个位置可以响应一些事件。比如，你希望有一个地方让精灵出生或者挂掉。在我们的教程中，我们要创建一个精灵的出生点。&lt;/p&gt;&#xD;
&lt;p&gt;那么，选择菜单栏中的&amp;#8220;Layer\Add Object Layer&amp;#8230;&amp;#8221;，将该层命名为&amp;#8220;objects&amp;#8221;，然后单击确定。现在如果你在地图上画，你会发现它不是直接画地图块，而是画一个形状怪异的灰色框框，你可以放缩和移动这个灰色框框。 &lt;/p&gt;&#xD;
&lt;p&gt;我们只是想选一个位置来放置我们的精灵，所以在地图上随便选一个位置单击。框框的大小并不重要，因为我们只需要用到x，y坐标。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2010/174785/2010110609370367.png" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;然后右键单击灰色框框和点击&amp;#8220;Properties&amp;#8221;，命名为&amp;#8220;spawnpoint&amp;#8221;，点击OK ： &lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2010/174785/2010110609373594.png" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;假如你在这里设置了对象的类（Cocos2DX的类，比如CCSprite），那么代码会自动创建一个对应类型的对象。(不过GeekAndDad.com的泰勒指出，这是Cocos2DX以前的版本才具有的功能，现在已经被删除了。) &lt;/p&gt;&#xD;
&lt;p&gt;不管怎样，我们将type置空，那么它将为我们创建一个NSMutableDictionary，我们可以通过它访问该对象的各个属性，包括X，Y坐标。 &lt;/p&gt;&#xD;
&lt;p&gt;保存地图并返回到代码，在HelloWorld.cpp的initCocos2d()接口中，在代码：&amp;nbsp;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
&lt;br/ /&gt;&#xD;
Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
&lt;br/ /&gt;&#xD;
--&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;load&amp;nbsp;the&amp;nbsp;tile&amp;nbsp;map&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;CCTMXTiledMap&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;pDesertTileMap&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CCTMXTiledMap::tiledMapWithTMXFile(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;tilemap.tmx&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&#xD;
pDesertTileMap&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;setPosition(CGPoint(&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;));&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;的下面，加入以下代码&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
&lt;br/ /&gt;&#xD;
Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
&lt;br/ /&gt;&#xD;
--&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;load&amp;nbsp;the&amp;nbsp;object&amp;nbsp;layer&amp;nbsp;and&amp;nbsp;get&amp;nbsp;the&amp;nbsp;coordinate&amp;nbsp;of&amp;nbsp;the&amp;nbsp;spawnpoint&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;CCTMXObjectGroup&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;objGroup&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;pDesertTileMap&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;objectGroupNamed(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;objects&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&#xD;
CCXStringToStringDictionary&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;spawnPoint&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;objGroup&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;objectNamed(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;spawnpoint&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;float&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;fSpawnPointX&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;spawnPoint&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;objectForKey(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;x&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;toFloat();&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;float&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;fSpawnPointY&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;spawnPoint&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;objectForKey(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;y&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;toFloat();&lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;load&amp;nbsp;player&amp;nbsp;image&amp;nbsp;texture&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;CCTexture2D&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;pPlayerTexture&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CCTextureCache::sharedTextureCache()&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;addImage(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Player.png&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;create&amp;nbsp;sprite&amp;nbsp;instance&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;CCSprite&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;pPlayer&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CCSprite::spriteWithTexture(pPlayerTexture);&lt;br /&gt;&#xD;
pPlayer&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;setPosition(CGPoint(fSpawnPointX,&amp;nbsp;fSpawnPointY));&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;add&amp;nbsp;the&amp;nbsp;player&amp;nbsp;to&amp;nbsp;the&amp;nbsp;tile&amp;nbsp;map&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;pDesertTileMap&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;addChild(pPlayer);&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;Ok，我们再解释一下对象层和对象组。在这里，我们通过CCTMXTiledMap对象的objectGroupNamed接口得到了对象层，它返回的是一个CCTMXObjectGroup对象。 &lt;/p&gt;&#xD;
&lt;p&gt;然后，我们通过CCTMXObjectGroup的objectNamed方法来得到一个NSMutableDictionary，它包含了对 象层的对象的一堆有用的信息，包括X和Y坐标，宽度和高度。不过这里我们关心的是X，Y坐标，所以我们就只取得X，Y坐标，并把它作为精灵的位置。&lt;/p&gt;&#xD;
&lt;p&gt;编译运行代码我们就可以看到精灵了。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2010/174785/2010110609381162.png" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;下面我们再让它动一动。在代码&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
&lt;br/ /&gt;&#xD;
Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
&lt;br/ /&gt;&#xD;
--&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;add&amp;nbsp;scene&amp;nbsp;to&amp;nbsp;director&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;CCDirector::getSharedDirector()&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;runWithScene(pScene);&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;的下面，添加代码：&lt;/p&gt;&#xD;
&lt;div&gt;&#xD;
&lt;pre&gt;&lt;div&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
&lt;br/ /&gt;&#xD;
Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
&lt;br/ /&gt;&#xD;
--&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;move&amp;nbsp;the&amp;nbsp;player&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;CCIntervalAction&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;move&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CCMoveBy::actionWithDuration(&lt;/span&gt;&lt;span style="color: #800080;"&gt;5&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;ccp(&lt;/span&gt;&lt;span style="color: #800080;"&gt;140&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;120&lt;/span&gt;&lt;span style="color: #000000;"&gt;));&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&#xD;
CCIntervalAction&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;back&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;move&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;reverse();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&#xD;
CCFiniteTimeAction&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;seq&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CCSequence::actions(move,&amp;nbsp;back,NULL);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&#xD;
pPlayer&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;runAction(&amp;nbsp;CCRepeatForever::actionWithAction((CCIntervalAction&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&amp;nbsp;seq)&amp;nbsp;);&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;这里的几个action类是对动作的封装。上面代码的含义是表示精灵将向右上方移动，相对位置是（140， 120），并在五秒钟内完成移动，然后反方向移回到原来位置。&lt;/p&gt;&#xD;
&lt;p&gt;Ok，先运行你的代码，然后欣赏你的精灵开心的跑来跑去吧！&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;fieldset&gt;&lt;legend&gt;系列教程&lt;/legend&gt;&#xD;
&lt;p&gt;Cocos2dSimpleGame入门系列&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
     &lt;li&gt;&lt;a href="http://www.cnblogs.com/walzer/archive/2010/10/10/1847089.html"&gt;如何用cocos2d-x来开发简单的Uphone游戏：(一) 下载安装和HelloWorld&lt;/a&gt;&lt;/li&gt;&#xD;
     &lt;li&gt;&lt;a href="http://www.cnblogs.com/walzer/archive/2010/10/10/1847100.html"&gt;如何用cocos2d-x来开发简单的Uphone游戏：(二) 移动的精灵&lt;/a&gt;&lt;/li&gt;&#xD;
     &lt;li&gt;&lt;a href="http://www.cnblogs.com/walzer/archive/2010/10/11/1848106.html"&gt;如何用cocos2d-x来开发简单的Uphone游戏：(三) 射击子弹 &amp;amp; 碰撞检测&lt;/a&gt;&lt;/li&gt;&#xD;
     &lt;li&gt;&lt;a href="http://www.cnblogs.com/walzer/archive/2010/10/12/1849063.html"&gt;如何用cocos2d-x来开发简单的Uphone游戏：(四) 音乐音效 &amp;amp; 最后的润色&lt;/a&gt;&lt;/li&gt;&#xD;
     &lt;li&gt;&lt;a href="http://www.cnblogs.com/walzer/archive/2010/10/22/1858155.html"&gt;如何用cocos2d-x来开发简单的Uphone游戏：(五) 打包发布&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;p&gt;TileMap使用系列&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
     &lt;li&gt;&lt;a href="http://www.cnblogs.com/FlyingPacer/archive/2010/11/06/cocos2dx_tilemap_part1.html"&gt;如何用cocos2d-x来做一个基于TileMap地图块的游戏 (一) &lt;/a&gt;&lt;br /&gt;&#xD;
     &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;/fieldset&gt;&#xD;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;img src="http://www.cnblogs.com/walzer/aggbug/1871561.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/walzer/archive/2010/11/08/1871561.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/walzer/archive/2010/10/22/1858155.html</id><title type="text">如何用cocos2d-x来开发简单的Uphone游戏：(五) 打包和发布</title><summary type="text">cocos2d-x.org开源社区把iPhone上知名的cocos2d游戏引擎翻译成C++语言，并在国产的Uphone平台上运行。本系列教程在Ray Wenderlic的 How To Make A Simple iPhone Game with Cocos2D 基础上，从头到尾解释了如何把Wenderlic的Cocos2DSimpleGame从objective c翻译成C++语言，从cocos2d-iphone移植到cocos2d-x并在uphone上运行，及过程中的细节注意点。</summary><published>2010-10-22T08:38:00Z</published><updated>2010-10-22T08:38:00Z</updated><author><name>Walzer</name><uri>http://www.cnblogs.com/walzer/</uri></author><link rel="alternate" href="http://www.cnblogs.com/walzer/archive/2010/10/22/1858155.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/walzer/archive/2010/10/22/1858155.html"/><content type="html">&lt;p&gt;到本系列文章的前四篇为止，我们已经完成了一个简单的游戏，Ray Wenderlic的那篇文章也翻译完了。但实际上工作还没有结束。游戏开发者应该没人愿意像前文那样，把图片和音乐资源存储在公开的文件目录下，被人拷走就能轻易被山寨了。所以这篇里我们先来讲下怎么对资源进行打包，最后和程序混在一起，编译成一个二进制文件发布。这个资源打包工作是uPhone机制提供的。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong style="font-size: 18pt; "&gt;一、图片和音乐资源打包&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/walzer/NinjaFire.PNG" height="397" width="750" /&gt;&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;p&gt;前面的Cocos2dSimpleGame中，如上图，我们一共使用了5张图片资源：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;table style="border-collapse: collapse; border: medium none;" border="1" cellpadding="0" cellspacing="0"&gt;&#xD;
     &lt;tbody&gt;&#xD;
         &lt;tr&gt;&#xD;
             &lt;td style="width: 213.05pt; border: 1pt solid black; padding: 0cm 5.4pt;" valign="top" width="284"&gt;&#xD;
             &lt;p align="center"&gt;&lt;strong&gt;&lt;em&gt;图片名称&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
             &lt;/td&gt;&#xD;
             &lt;td style="width: 213.05pt; border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: black black black -moz-use-text-color; padding: 0cm 5.4pt;" valign="top" width="284"&gt;&#xD;
             &lt;p align="center"&gt;&lt;strong&gt;&lt;em&gt;图片用途&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
             &lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
         &lt;tr&gt;&#xD;
             &lt;td style="width: 213.05pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color black black; padding: 0cm 5.4pt;" valign="top" width="284"&gt;&#xD;
             &lt;p align="center"&gt;CloseNormal.png&lt;/p&gt;&#xD;
             &lt;/td&gt;&#xD;
             &lt;td style="width: 213.05pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; padding: 0cm 5.4pt;" valign="top" width="284"&gt;&#xD;
             &lt;p align="center"&gt;关闭按钮的正常状态图片&lt;/p&gt;&#xD;
             &lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
         &lt;tr&gt;&#xD;
             &lt;td style="width: 213.05pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color black black; padding: 0cm 5.4pt;" valign="top" width="284"&gt;&#xD;
             &lt;p align="center"&gt;CloseSelected.png&lt;/p&gt;&#xD;
             &lt;/td&gt;&#xD;
             &lt;td style="width: 213.05pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; padding: 0cm 5.4pt;" valign="top" width="284"&gt;&#xD;
             &lt;p align="center"&gt;关闭按钮被点击时的图片&lt;/p&gt;&#xD;
             &lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
         &lt;tr&gt;&#xD;
             &lt;td style="width: 213.05pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color black black; padding: 0cm 5.4pt;" valign="top" width="284"&gt;&#xD;
             &lt;p align="center"&gt;Player.png&lt;/p&gt;&#xD;
             &lt;/td&gt;&#xD;
             &lt;td style="width: 213.05pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; padding: 0cm 5.4pt;" valign="top" width="284"&gt;&#xD;
             &lt;p align="center"&gt;带头大哥&lt;/p&gt;&#xD;
             &lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
         &lt;tr&gt;&#xD;
             &lt;td style="width: 213.05pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color black black; padding: 0cm 5.4pt;" valign="top" width="284"&gt;&#xD;
             &lt;p align="center"&gt;Projectile.png&lt;/p&gt;&#xD;
             &lt;/td&gt;&#xD;
             &lt;td style="width: 213.05pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; padding: 0cm 5.4pt;" valign="top" width="284"&gt;&#xD;
             &lt;p align="center"&gt;带头大哥的暗器&lt;/p&gt;&#xD;
             &lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
         &lt;tr&gt;&#xD;
             &lt;td style="width: 213.05pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color black black; padding: 0cm 5.4pt;" valign="top" width="284"&gt;&#xD;
             &lt;p align="center"&gt;Target.png&lt;/p&gt;&#xD;
             &lt;/td&gt;&#xD;
             &lt;td style="width: 213.05pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; padding: 0cm 5.4pt;" valign="top" width="284"&gt;&#xD;
             &lt;p align="center"&gt;不知死活的小喽啰&lt;/p&gt;&#xD;
             &lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
     &lt;/tbody&gt;&#xD;
&lt;/table&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 下面，我们使用Uphone开发平台自带的资源编辑器TOPS Builder将资源进行打包。步骤如下：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;1. 使用 TOPS Builder 打开游戏的资源工程:&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;双击 D:\Work7\cocos2d\Cocos2dSimpleGame\Res\Cocos2dSimpleGame_Res.TRG 文件，这就打开了游戏的资源工程，运行的界面如下图：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/walzer/tops_builder.PNG" width="730" height="427" alt="tops builder" /&gt;&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;2. 将需要使用的图片和音乐添加到资源编辑器中&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;在资源编辑器中添加图片的示意图如下：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/walzer/tops_builder_add_image.PNG" width="730" height="427" alt="" /&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
     &lt;li&gt;首先，单击图中 1 所示的"Bitmaps"标签，进入图片资源编辑分页；&lt;/li&gt;&#xD;
     &lt;li&gt;然后，右击图中 2 所示的空白区域，弹出如图中 3 所示的菜单，选择&amp;#8220;添加图片&amp;#8221;，即可选择图片加到资源比编辑器中。&lt;/li&gt;&#xD;
     &lt;li&gt;添加成功后，图中 2 所示的空白区域会把已添加的图片名字列出。&lt;/li&gt;&#xD;
     &lt;li&gt;使用同样的方法添加音乐资源(mp3,wav等），但注意第一步选资源类型时，应点到"Raw data"标签内&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;3. 对添加的资源进行编译&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;在资源编辑器中，点击界面左上角的闪电符号按钮，对资源进行编译。&lt;/p&gt;&#xD;
&lt;p&gt;注意：在进行编译之前，需要讲使用的图片、音月资源文件添加到代码的Visual Studio工程中，添加后Visual Studio工程的文件视图如下：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/walzer/uphone_add_resource.PNG" width="319" height="654" alt="" /&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;注意：此编译过程是将图片文件的数据以 Uphone 内部的结构形式保存到 .h 文件中，并为每个图片资源分配一个资源 ID，在应用中通过该 ID 使用该图片资源。编译后，你可以看到这个巨大的.h文件D:\Work7\cocos2d\Cocos2dSimpleGame\Res\cocos2dsimplegame_res_def.h 。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;通过上面的几个简单步骤，我们就完成了资源打包。这样我们的游戏在编译完成后，资源和代码就在同一个二进制包里了&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong style="font-size: 18pt; "&gt;二、在cocos2d游戏中使用打包的资源&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;资源打包的工作完成了。接下来我们就可以在cocos2d游戏中使用这些资源了。使用前，我们先了解一下普通的Uphone应用是如何使用打包资源的&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;1. 普通Uphone应用使用打包资源的方法&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;在Uphone SDK中，有一个TResource类，这个类提供了静态接口函数用于获取当前上下文的bitmap和rawdata资源数据，接口及注释是这样的：&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
&lt;br/ /&gt;&#xD;
Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
&lt;br/ /&gt;&#xD;
--&gt;&lt;span style="color: #008000;"&gt;/*&lt;/span&gt;&lt;span style="color: #008000;"&gt;*&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #008000;"&gt;@brief&amp;nbsp;&amp;nbsp;获取当前上下文资源里的图片类实例。&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #008000;"&gt;此函数返回的TBitmap实例，无须释放。&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #008000;"&gt;@param&amp;nbsp;nResId&amp;nbsp;资源ID。&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #008000;"&gt;@return&amp;nbsp;TBitmap指针。&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #008000;"&gt;*/&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;const&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;TBitmap&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;LoadConstBitmap(Int32&amp;nbsp;nResId);&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #008000;"&gt;/*&lt;/span&gt;&lt;span style="color: #008000;"&gt;*&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #008000;"&gt;@brief&amp;nbsp;&amp;nbsp;获取当前上下文资源里的原始数据。&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #008000;"&gt;此函数直接返回资源中的原始数据的地址（即原始数据内容不可更改）。&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #008000;"&gt;@param&amp;nbsp;nResId&amp;nbsp;资源ID。&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #008000;"&gt;@param&amp;nbsp;puLength&amp;nbsp;原始数据长度。&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #008000;"&gt;@return&amp;nbsp;原始数据指针。&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #008000;"&gt;*/&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;const&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;LoadConstRawData(Int32&amp;nbsp;nResId,&amp;nbsp;UInt32&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;puLength&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;NULL);&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;所以，在Uphone应用中只要使用如下代码就可以加载图片资源了：&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
&lt;br/ /&gt;&#xD;
Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
&lt;br/ /&gt;&#xD;
--&gt;&lt;span style="color: #0000FF;"&gt;const&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;TBitmap&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;pBmp&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;TResource::LoadConstBitmap(COCOS2_ID_BITMAP_CloseNormal);&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;2. &amp;nbsp;cocos2d-x游戏中使用打包资源的方法&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;上面的资源调用方法对cocos2d-x开发者来说功能不够强、不够跨平台，也不能很好地解决不同分辨率匹配不同资源的问题。同时，用资源ID调用的方法比较类似于windows mobile，而对于习惯了cocos2d-iphone的开发者来说，文件名会更符合一些。所以我们做了一个哈希表来实现 文件名(key)-&amp;gt; 资源ID(value) 的映射，cocos2d-x开发者只要实现填写好这份映射，然后游戏里就可以用文件名来调用资源，甚至不用理会这个资源是暴露在文件目录里还是打包编译在资源包里。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;（1） 首先，建立一个资源名称字符串与资源ID的映射&lt;/p&gt;&#xD;
&lt;p&gt;我们添加一个Resource.h头文件来保存这个映射，头文件中代码如下：&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
&lt;br/ /&gt;&#xD;
Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
&lt;br/ /&gt;&#xD;
--&gt;&lt;span style="color: #000000;"&gt;#ifndef&amp;nbsp;_RESOURCE_H_&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;#define&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;_RESOURCE_H_&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;#include&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;SimpleAudioEngine.h&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;#include&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;cocos2dsimplegame_res_def.h&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;#include&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;cocos2d.h&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;const&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;T_ResourceInfo&amp;nbsp;ResInfo[]&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;{&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;CloseNormal&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;COCOS2_ID_BITMAP_CloseNormal&amp;nbsp;},&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;CloseSelected&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&amp;nbsp;COCOS2_ID_BITMAP_CloseSelected&amp;nbsp;},&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Player&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;COCOS2_ID_BITMAP_Player&amp;nbsp;},&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Projectile&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;COCOS2_ID_BITMAP_Projectile&amp;nbsp;},&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Target&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;COCOS2_ID_BITMAP_Target&amp;nbsp;},&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;CloseNormal@WVGA&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;COCOS2_ID_BITMAP_CloseNormal_WVGA&amp;nbsp;},&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;CloseSelected@WVGA&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&amp;nbsp;COCOS2_ID_BITMAP_CloseSelected_WVGA&amp;nbsp;},&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Player@WVGA&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;COCOS2_ID_BITMAP_Player_WVGA&amp;nbsp;},&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Projectile@WVGA&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;COCOS2_ID_BITMAP_Projectile_WVGA&amp;nbsp;},&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Target@WVGA&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;COCOS2_ID_BITMAP_Target_WVGA&amp;nbsp;},&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;};&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #008000;"&gt;/*&lt;/span&gt;&lt;span style="color: #008000;"&gt;*&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #008000;"&gt;@warning&amp;nbsp;在声音数据信息的结构体中，FileName必须包含文件的扩展名，并且需要与原始文件的扩展名一致&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;否则无法播放&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #008000;"&gt;*/&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;const&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;T_SoundResInfo&amp;nbsp;SoundResInfo[]&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;{&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;background-music-aac.mp3&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;COCOS2_ID_RAWDATA_background_music_aac&amp;nbsp;},&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;pew-pew-lei.wav&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;COCOS2_ID_RAWDATA_pew_pew_lei&amp;nbsp;},&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;};&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;#endif&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;这里面@WVGA的资源，将在下一篇文章中解释&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;（2） 其次，需要让游戏引擎&amp;#8220;知道&amp;#8221;这个映射关系的存在：&lt;/p&gt;&#xD;
&lt;p&gt;在Cocos2dSimpleGameAppDelegate.cpp文件的initCocos2d() 函数中添加代码如下（当然，别忘记添加Resource.h这个头文件）&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
&lt;br/ /&gt;&#xD;
Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
&lt;br/ /&gt;&#xD;
--&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;set&amp;nbsp;the&amp;nbsp;ResourceEntry&amp;nbsp;and&amp;nbsp;Images&amp;nbsp;ResInfo&amp;nbsp;(name&amp;nbsp;and&amp;nbsp;ResID)&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;CCFileUtils::setResourceInfo(ResInfo,&amp;nbsp;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;sizeof&lt;/span&gt;&lt;span style="color: #000000;"&gt;(ResInfo)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;sizeof&lt;/span&gt;&lt;span style="color: #000000;"&gt;(T_ResourceInfo));&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;set&amp;nbsp;the&amp;nbsp;ResourceEntry&amp;nbsp;and&amp;nbsp;sound&amp;nbsp;ResInfo&amp;nbsp;(filename&amp;nbsp;and&amp;nbsp;ResID)&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;SimpleAudioEngine::getSharedEngine()&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;setSoundResInfo(SoundResInfo,&amp;nbsp;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;sizeof&lt;/span&gt;&lt;span style="color: #000000;"&gt;(SoundResInfo)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;sizeof&lt;/span&gt;&lt;span style="color: #000000;"&gt;(T_SoundResInfo));&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;(3) &amp;nbsp;第三，需要让游戏引擎&amp;#8220;知道&amp;#8221;当前的上下文&lt;/p&gt;&#xD;
&lt;p&gt;在上面我们了解了普通Uphone应用通过TResource类来获取上下文资源。现在游戏引擎已经&amp;#8220;知道&amp;#8221;了打包资源的ID，但是还需要让游戏引擎&amp;#8220;知道&amp;#8221;当前的上下文信息，它才能根据资源ID获取数据。具体做法如下&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span  style="font-family: 'Courier New'; font-size: 13px; "&gt;&lt;span style="color: #0000FF;"&gt;extern&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;const&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;AppResourceEntry&amp;nbsp;Cocos2dSimpleGameResourceEntry;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;(a) 在D:\Work7\cocos2d\Cocos2dSimpleGame\main.cpp文件中，使用extern声明变量Cocos2dSimpleGameResourceEntry&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
&lt;br/ /&gt;&#xD;
Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
&lt;br/ /&gt;&#xD;
--&gt;&lt;span style="color: #000000;"&gt;#include&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;cocos2dsimplegame_res_c.h&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;const&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;ResourceRegisterEntry&amp;nbsp;ResRegList_Cocos2dSimpleGame[]&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;{&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TG_RESOURCE_DEFINE&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;};&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;extern&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;const&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;AppResourceEntry&amp;nbsp;Cocos2dSimpleGameResourceEntry&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;{&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(ResourceRegisterEntry&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)ResRegList_Cocos2dSimpleGame,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;res&amp;nbsp;list&amp;nbsp;in&amp;nbsp;this&amp;nbsp;app&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;sizeof&lt;/span&gt;&lt;span style="color: #000000;"&gt;(ResRegList_Cocos2dSimpleGame)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;sizeof&lt;/span&gt;&lt;span style="color: #000000;"&gt;(ResourceRegisterEntry),&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;number&amp;nbsp;of&amp;nbsp;item&amp;nbsp;in&amp;nbsp;res&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;};&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;(b) 在Cocos2dSimpleGameAppDelegate.cpp文件头部添加代码&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
&lt;br/ /&gt;&#xD;
Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
&lt;br/ /&gt;&#xD;
--&gt;&lt;span style="color: #0000FF;"&gt;extern&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;const&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;AppResourceEntry&amp;nbsp;Cocos2dSimpleGameResourceEntry;&lt;/span&gt;&lt;span  style="font-family: verdana, 'courier new'; font-size: 14px; "&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;并在initCocos2d() 函数中，在上面步骤(2)的基础上，把代码改成&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
&lt;br/ /&gt;&#xD;
Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
&lt;br/ /&gt;&#xD;
--&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;for&amp;nbsp;cocos2d-x,&amp;nbsp;set&amp;nbsp;the&amp;nbsp;ResourceEntry&amp;nbsp;and&amp;nbsp;Images&amp;nbsp;ResInfo&amp;nbsp;(name&amp;nbsp;and&amp;nbsp;ResID)&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;CCFileUtils::setResourceEntry(&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Cocos2dSimpleGameResourceEntry);&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;CCFileUtils::setResourceInfo(ResInfo,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;sizeof&lt;/span&gt;&lt;span style="color: #000000;"&gt;(ResInfo)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;sizeof&lt;/span&gt;&lt;span style="color: #000000;"&gt;(T_ResourceInfo));&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;for&amp;nbsp;cocosDenshion,&amp;nbsp;set&amp;nbsp;the&amp;nbsp;ResourceEntry&amp;nbsp;and&amp;nbsp;sound&amp;nbsp;ResInfo&amp;nbsp;(filename&amp;nbsp;and&amp;nbsp;ResID)&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;SimpleAudioEngine::getSharedEngine()&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;setResourceEntry(&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Cocos2dSimpleGameResourceEntry);&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;SimpleAudioEngine::getSharedEngine()&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;setSoundResInfo(SoundResInfo,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;sizeof&lt;/span&gt;&lt;span style="color: #000000;"&gt;(SoundResInfo)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;sizeof&lt;/span&gt;&lt;span style="color: #000000;"&gt;(T_SoundResInfo));&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;之所以需要两步，是因为cocos2d处理图像，cocosDenshion处理音频，是两个不同的库。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;(4) 最后，就可以使用打包的资源了&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
&lt;br/ /&gt;&#xD;
Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
&lt;br/ /&gt;&#xD;
--&gt;&lt;span style="color: #000000;"&gt;CCSprite&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;player&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CCSprite::spriteWithFile(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;player.png&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;或者&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
&lt;br/ /&gt;&#xD;
Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
&lt;br/ /&gt;&#xD;
--&gt;&lt;span style="color: #000000;"&gt;CCSprite&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;player&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CCSprite::spriteWithFile(ResInfo[&lt;/span&gt;&lt;span style="color: #800080;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;].ResName);&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;实际上，对于按照前面教程开发的代码，在这里就不用修改一字了。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;在 Uphone 平台下，游戏引擎根据图片名称创建 Texture 的逻辑为：根据传入的字符串先在设置的ResInfo映射表中查找是否有相应的资源ID，如果存在则加载并成功返回；如果不存在，则到文件目录下查找同名文件，若还是找不到则加载失败。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;fieldset&gt;&lt;legend&gt;&lt;strong&gt;特别注意&lt;/strong&gt;&lt;/legend&gt;&#xD;
&lt;p&gt;1. 如果打包的资源都是直接进行使用的话，在ResInfo这个映射里的资源名称可以随意设定。但是，当打包的图片资源是被 .plist / .tmx / .fnt 等配置文件指定要使用的图片时，资源名称就不能随意设定了。示例如下：&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;span style="color:#008000;"&gt;//&lt;/span&gt;&lt;span style="color:#008000;"&gt;&amp;nbsp;代码要用.plist&amp;nbsp;文件创建SpriteFrames，其中grossini.plist&amp;nbsp;文件指定要使用&amp;nbsp;XXX.png&lt;/span&gt;&lt;span style="color:#008000;"&gt;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color:#000000;"&gt;CCSpriteFrameCache::addSpriteFramesWithFile(&lt;/span&gt;&lt;span style="color:#800000;"&gt;"&lt;/span&gt;&lt;span style="color:#800000;"&gt;animations/grossini.plist&lt;/span&gt;&lt;span style="color:#800000;"&gt;"&lt;/span&gt;&lt;span style="color:#000000;"&gt;);&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;那么在Resinfo中图片XXX.png的资源名称就必须为 "animations/XXX.png" ，这样才能让游戏引擎找到&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;2. 建议在给cocos2d-x用的ResInfo中资源名称包含原始文件的扩展名。而给cocosDenshion用的&lt;span  style="font-family:'Courier New';font-size:13px;"&gt;T_SoundResInfo中，资源名则必须明确是.mp3还是.wav，否则SimpleAudioEngine无法识别该资源的解码类型&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;/fieldset&gt;&#xD;
&lt;p&gt;&lt;span  style="font-family: 'Courier New'; font-size: 13px; "&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong style="font-size: 18pt; "&gt;&amp;nbsp;三、交叉编译&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;交叉编译的方法，在Uphone开发文档里有详细描述，这里就不重复了。对于cocos2d-x游戏来说，首先得把cocos2dx, CocosDenshion, chipmunk, Box2D这几个库编译好。我们已经做好了makefile文件，现在只要把四个目录挨个进去，敲一行&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
&lt;br/ /&gt;&#xD;
Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
&lt;br/ /&gt;&#xD;
--&gt;&lt;span style="color: #000000;"&gt;make&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;f&amp;nbsp;Makefile.ARM&amp;nbsp;all&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;就可以了。生成的.so文件都在 D:\Work7\PRJ_TG3\LIB\ARMLib 目录下。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;而我们新开发的Cocos2dSimpleGame, 得在Makefile.ARM文件里增加一些DEFINE, PATH和链接的LIB，如下&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
&lt;br/ /&gt;&#xD;
Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
&lt;br/ /&gt;&#xD;
--&gt;&lt;span style="color: #000000;"&gt;DEFINES&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;+=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;DCCX_UNDER_UPHONE&lt;br /&gt;&#xD;
INCLUDE_PATH&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;+=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;I.&amp;nbsp;\&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;I.&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;Res&amp;nbsp;\&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;I..&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;cocos2dx&amp;nbsp;\&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;I..&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;cocos2dx&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;include&amp;nbsp;\&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;I..&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;cocosDenshion&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;include&lt;br /&gt;&#xD;
LIBS&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;+=-&lt;/span&gt;&lt;span style="color: #000000;"&gt;lcocos2d&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;lCocosDenshion&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;lTG3_EGL&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;lTG3_GLESv1_CM&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;LIBS里面，第一个是cocos2d图形库，第二个是CocosDenshion音效库，然后是EGL库和GLES 1.1的库。虽然Uphone上有GLES 2.0，但cocos2d仍然使用1.1&lt;/p&gt;&#xD;
&lt;p&gt;同上面那条指令一样make之，我们就可以看到libCocos2dSimpleGame.so这个文件生成在 D:\Work7\PRJ_TG3\LIB\ARMLib 目录下了&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong style="font-size: 18pt; "&gt;四、安装包制作&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;和uphone普通应用的打包过程一样，详细步骤的文档在uphone开发指南和开发者社区里都有。在 D:\Work7\PRJ_TG3\Tools\ 目录下有个 TG3_Publish_Maker_V1.04.exe ，启动之。然后填入安装目录、装入libCocos2dSimpleGame.so, 选择好桌面快捷图标就行了。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/walzer/TG3%E5%AE%89%E8%A3%85%E5%8C%85%E5%88%B6%E4%BD%9C%E5%B7%A5%E5%85%B7.PNG" width="669" height="489" alt="uphone 安装包制作工具" /&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;实际上，我们已经把Cocos2dSimpleGame的安装包配置文件保存为Cocos2dSimpleGame\pak\Cocos2dSimpleGame.TG3_IProc了，您可以从安装包制作工具里点&amp;#8220;从文件加载&amp;#8221;，并选择上述的TG3_IProc文件，就可以看到所有参数应如何填写。然后，点图中左下角的&amp;#8220;生成安装包&amp;#8221;，就会生成一个Cocos2dSimpleGame.TGI安装文件。这就是最后结果了。可以直接拷到手机里安装，或者发布到应用商城里。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;《如何用cocos2d-x来开发简单的Uphone游戏 》这系列教程到这篇就结束了。后面我会从cocos2d-iphone上翻译更多的cocos2d-x文章过来。最后，祝所有用cocos2d引擎的开发者：游戏卖座、大把赚钱！&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;fieldset&gt;&lt;legend&gt;系列教程&lt;/legend&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/walzer/archive/2010/10/10/1847089.html"&gt;如何用cocos2d-x来开发简单的Uphone游戏：(一) 下载安装和HelloWorld&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/walzer/archive/2010/10/10/1847100.html"&gt;如何用cocos2d-x来开发简单的Uphone游戏：(二) 移动的精灵&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/walzer/archive/2010/10/11/1848106.html"&gt;如何用cocos2d-x来开发简单的Uphone游戏：(三) 射击子弹 &amp;amp; 碰撞检测&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/walzer/archive/2010/10/12/1849063.html"&gt;如何用cocos2d-x来开发简单的Uphone游戏：(四) 音乐音效 &amp;amp; 最后的润色&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/walzer/archive/2010/10/22/1858155.html"&gt;如何用cocos2d-x来开发简单的Uphone游戏：(五) 打包和发布&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;/fieldset&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span  style="font-family: Verdana,'Lucida Grande',Arial,Helvetica,sans-serif; line-height: 18px; font-size: 12px;"&gt;&lt;strong&gt;著作权声明：本文由&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;&lt;a href="http://www.walzer.cn/" style="color: #1d58d1; text-decoration: none;"&gt;http://www.walzer.cn/&lt;/a&gt;原创，欢迎转载分享。请尊重作者劳动，转载时保留该声明和作者博客链接，谢谢！&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/walzer/aggbug/1858155.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/walzer/archive/2010/10/22/1858155.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/walzer/archive/2010/10/12/1849063.html</id><title type="text">如何用cocos2d-x来开发简单的Uphone游戏：(四) 音乐音效 &amp;amp; 最后的润色</title><summary type="text">cocos2d-x.org开源社区把iPhone上知名的cocos2d游戏引擎翻译成C++语言，并在国产的Uphone平台上运行。本系列教程在Ray Wenderlic的 How To Make A Simple iPhone Game with Cocos2D 基础上，从头到尾解释了如何把Wenderlic的Cocos2DSimpleGame从objective c翻译成C++语言，从cocos2d-iphone移植到cocos2d-x并在uphone上运行，及过程中的细节注意点。</summary><published>2010-10-12T10:03:00Z</published><updated>2010-10-12T10:03:00Z</updated><author><name>Walzer</name><uri>http://www.cnblogs.com/walzer/</uri></author><link rel="alternate" href="http://www.cnblogs.com/walzer/archive/2010/10/12/1849063.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/walzer/archive/2010/10/12/1849063.html"/><content type="html">&lt;div&gt;到上一篇为止，我们已经基于cocos2d-x开发出一个很简单的Uphone游戏原型了。下面再添加一些音效、背景音乐和简单的游戏逻辑就可以完工了。&lt;/div&gt;&#xD;
&lt;div&gt;&lt;br /&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;span  style="font-size: 24px; "&gt;&lt;strong&gt;六、音乐音效的实现&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div&gt;cocos2d-iphone中包含一个cocosDenshion库，里面从底到高提供三层接口，CDSoundEngine-&amp;gt;CDAudioManager-&amp;gt;SimpleAudioEngine。 cocosDenshion整个是依赖于OpenAL实现的。但OpenAL并不像OpenGL是Khronos Group的标准，而是Creative(创新)公司的一个开源库，可以软实现或硬件实现，只是名字起的比较山寨容易让人联想到OpenGL而已。目前硬件实现了OpenAL的好像就苹果一家，对于没有OpenAL的Uphone而言，我们就无法提供cocosDenshion库里底层那些复杂的音效支持了。而最顶一层，SimpleAudioEngine是最简单实用的、也是开发者最常用到的，cocos2d-x提供了这层接口的封装。我们来看游戏代码中如何&amp;#8220;只用一行&amp;#8221;就实现了音效播放&lt;/div&gt;&#xD;
&lt;div&gt;&lt;br /&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;首先把background-music-aac.mp3和pew-pew-lei.wav两个文件拷贝到 D:\Work7\NEWPLUS\TDA_DATA\UserData 目录下。这里说明两点&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
&lt;ol&gt;&#xD;
     &lt;li&gt;Wenderlic文章中提供的这两个音乐文件，是caf格式，这是苹果自己的格式。我们在这里分别转成WAV和MP3，演示一下SimpleAudioEngine对这两种大众格式的支持&lt;/li&gt;&#xD;
     &lt;li&gt;和前面的图片资源一样，我们先简单化地把音乐资源拷贝到uphone模拟器默认的资源目录下，通过直接读文件来使用。在本系列教程的下一篇&amp;#8220;打包发布&amp;#8221;中将会描述如何把图片和音乐和程序打在一个二进制包里，游戏开发者不用担心资源被人轻易拷走后山寨的问题&lt;/li&gt;&#xD;
&lt;/ol&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
先在HelloWorldScene.cpp的开头，添加对SimpleaudioEngine.h的包含&#xD;
&lt;table width="100%"&gt;&#xD;
     &lt;tbody&gt;&#xD;
         &lt;tr&gt;&#xD;
             &lt;td width="50%"&gt;&#xD;
             &lt;div&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
             http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             --&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;&amp;nbsp;cpp&amp;nbsp;with&amp;nbsp;cocos2d-x&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;#include&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;"&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;SimpleAudioEngine/SimpleAudioEngine.h&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;"&lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
             &lt;td width="50%"&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
             http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             --&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;&amp;nbsp;objc&amp;nbsp;with&amp;nbsp;cocos2d-iphone&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;#import&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;"&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;SimpleAudioEngine.h&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
     &lt;/tbody&gt;&#xD;
&lt;/table&gt;&#xD;
&lt;p&gt;然后在bool HelloWorld::init()方法中，加入播放背景音乐的代码&lt;/p&gt;&#xD;
&lt;span style="font-size: 8pt; "&gt;&#xD;
&lt;/span&gt;&#xD;
&lt;table width="100%"&gt;&#xD;
     &lt;tbody&gt;&#xD;
     &lt;/tbody&gt;&#xD;
     &lt;tbody&gt;&#xD;
         &lt;tr&gt;&#xD;
             &lt;td width="50%"&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
             http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             --&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;&amp;nbsp;cpp&amp;nbsp;with&amp;nbsp;cocos2d-x&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;SimpleAudioEngine::getSharedEngine()&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;playBackgroundMusic(&lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;p&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;background-music-aac.mp3&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;);&lt;/span&gt;&lt;/p&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
             &lt;td width="50%"&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
             http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             --&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;&amp;nbsp;objc&amp;nbsp;with&amp;nbsp;cocos2d-iphone&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;[[SimpleAudioEngine&amp;nbsp;sharedEngine]&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;playBackgroundMusic:&lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;p&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@"&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;background-music-aac.caf&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;];&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
     &lt;/tbody&gt;&#xD;
&lt;/table&gt;&#xD;
&lt;p&gt;接着在ccTouchesEnded方法中播放扔出飞镖的音效&lt;/p&gt;&#xD;
&lt;table width="100%"&gt;&#xD;
     &lt;tbody&gt;&#xD;
     &lt;/tbody&gt;&#xD;
     &lt;tbody&gt;&#xD;
         &lt;tr&gt;&#xD;
             &lt;td width="50%"&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
             http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             --&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;&amp;nbsp;cpp&amp;nbsp;with&amp;nbsp;cocos2d-x&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;SimpleAudioEngine::getSharedEngine()&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;playEffect(&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;"&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;pew-pew-lei.wav&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;);&lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
             &lt;td width="50%"&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
             http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             --&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;&amp;nbsp;objc&amp;nbsp;with&amp;nbsp;cocos2d-iphone&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;[[SimpleAudioEngine&amp;nbsp;sharedEngine]&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;playEffect:&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;@"&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;pew-pew-lei.caf&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;];&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
     &lt;/tbody&gt;&#xD;
&lt;/table&gt;&#xD;
&lt;p&gt;音效和背景音乐就这样简单搞定了。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong style="font-size: 18pt; "&gt;七、最后的润色&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;现在让我们创建一个新场景，在打掉若干小怪、或者被小怪穿到屏幕左边时显示&amp;#8220;You Win&amp;#8221;或&amp;#8220;You Lose&amp;#8221;的界面。在Visual Studio中新建两个文件, GameOverScene.cpp和GameOverScene.h&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;GameOverScene.h的内容&amp;nbsp;&lt;/p&gt;&#xD;
&lt;table width="100%"&gt;&#xD;
     &lt;tbody&gt;&#xD;
         &lt;tr&gt;&#xD;
             &lt;td width="50%"&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
             http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             --&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;1&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;cpp&amp;nbsp;with&amp;nbsp;cocos2d-x&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;2&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000;"&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;#ifndef&amp;nbsp;_GAME_OVER_SCENE_H_&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;3&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;#define&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;_GAME_OVER_SCENE_H_&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;4&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;5&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;#include&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;cocos2d.h&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;6&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;7&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;GameOverLayer&amp;nbsp;:&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;cocos2d::CCColorLayer&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;8&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;{&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;9&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;10&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;GameOverLayer():_label(NULL)&amp;nbsp;{};&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;11&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;virtual&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;~&lt;/span&gt;&lt;span style="color: #000000;"&gt;GameOverLayer();&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;12&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;bool&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;init();&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;13&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;LAYER_NODE_FUNC(GameOverLayer);&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;14&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;15&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;gameOverDone();&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;16&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;17&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;CCX_SYNTHESIZE_READONLY(cocos2d::CCLabel&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;_label,&amp;nbsp;Label);&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;18&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;};&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;19&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;20&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;21&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;22&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;23&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;24&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;GameOverScene&amp;nbsp;:&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;cocos2d::CCScene&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;25&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;{&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;26&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;27&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;GameOverScene():_layer(NULL)&amp;nbsp;{};&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;28&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;~&lt;/span&gt;&lt;span style="color: #000000;"&gt;GameOverScene();&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;29&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;bool&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;init();&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;30&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;SCENE_NODE_FUNC(GameOverScene);&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;31&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;32&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;CCX_SYNTHESIZE_READONLY(GameOverLayer&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;_layer,&amp;nbsp;Layer);&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;33&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;};&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;34&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;35&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;font  color="#008080"&gt;&lt;span  style="color: #000000; "&gt;&lt;span style="font-family: 'Courier New'; color: #008080; "&gt;36&lt;/span&gt;&amp;nbsp;&lt;span style="font-family: 'Courier New'; color: #000000; "&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="font-family: 'Courier New'; color: #008080; "&gt;37&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="color: #000000;"&gt;&lt;/span&gt;&amp;nbsp;&lt;span style="font-family: 'Courier New'; color: #000000; "&gt;&lt;/span&gt;&lt;span style="font-family: 'Courier New'; color: #0000ff; "&gt;#endif&lt;/span&gt;&lt;span style="font-family: 'Courier New'; color: #000000; "&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 'Courier New'; color: #008000; "&gt;//&lt;/span&gt;&lt;span style="font-family: 'Courier New'; color: #008000; "&gt;&amp;nbsp;_GAME_OVER_SCENE_H_&lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
             &lt;td width="50%"&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
             http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             --&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;1&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;objc&amp;nbsp;with&amp;nbsp;cocos2d-iphone&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;2&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000;"&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;3&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;4&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;5&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;#import&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;cocos2d.h&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;6&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;7&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;@interface&amp;nbsp;GameOverLayer&amp;nbsp;:&amp;nbsp;CCColorLayer&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;8&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;{&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;9&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;10&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;11&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;12&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;13&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;14&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;15&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;16&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;17&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;CCLabel&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;_label;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;18&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;}&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;19&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;20&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;@property&amp;nbsp;(nonatomic,&amp;nbsp;retain)&amp;nbsp;CCLabel&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;label;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;21&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;22&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;@end&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;23&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;24&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;@interface&amp;nbsp;GameOverScene&amp;nbsp;:&amp;nbsp;CCScene&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;25&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;{&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;26&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;27&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;28&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;29&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;30&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;31&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;32&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;GameOverLayer&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;_layer;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;33&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;}&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;34&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;35&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;@property&amp;nbsp;(nonatomic,&amp;nbsp;retain)&amp;nbsp;GameOverLayer&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;layer;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;36&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080;"&gt;37&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;@end&lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
     &lt;/tbody&gt;&#xD;
&lt;/table&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;fieldset&gt;&lt;legend&gt;&lt;strong&gt;转换要点&lt;/strong&gt;&lt;/legend&gt;&#xD;
&lt;p&gt;1. 在objc的头文件中，可以不声明类成员函数，而直接在.m文件里实现。cpp不允许这样做。所以我们会多个bool init();&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;2. 由于cpp里没有self这种强大的关键字，所以CCLayer::node()和CCScene::node()方法的都需要派生类自己实现一份，不能像objc那样直接从父类继承下来靠self关键字变成指向自己的对象。node()方法很方便，集合了new,init,autorelease等方法，可以减少调用者的代码量。但由于每份node方法的代码都类似，我们就做了两个宏来方便大家 LAYER_NODE_FUNC和SCENE_NODE_FUNC. 如果想使用这两个宏，就必须在派生类里实现bool init()方法。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;2. 关于构造函数和init方法。cocos2d-x在从objc改写为cpp时，并不是直接把init的内容翻到C++构造函数里面，主要出于这样的考虑：C++构造函数有个天生缺陷&amp;#8212;&amp;#8212;没有返回值。这就导致C++构造函数依赖try-catch来捕捉逻辑异常。而一般try-catch用的人不多，开启try-catch支持会使编译后的二进制程序增加不少体积，而且android NDK上也是彻底不支持try-catch。所以我们采取现在比较流行的&amp;#8220;二阶段构造&amp;#8221;的方法，即使用时先调构造函数，再调用init处理初始化逻辑。这种思路不论是在苹果iOS的接口设计（比如[[NSString alloc] init]，即二阶段构造）、还是在samsung bada操作系统使用C++类时都是如此。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;3. objc中的@synthesize实现了_label和_layer两个属性的具体setter和getter。我们在cocos2dx\include\Cocos2dDefine.h中实现了一系列的宏定义，来模仿实现@property和@synthesize的功能。在上面代码中，我们用CCX_SYNTHESIZE_READONLY宏来实现了只读的类成员变量，只有getter没有setter。由于VC++的规则是inline函数只能在头文件里实现，所以@synthesize就从objc的.m文件里移动到cpp的.h文件里，和成员变量声明一并实现了&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;4. 严谨起见，我们需要在CPP的类构造函数里，对所有成员变量初始化，上文中增加了构造函数把_layer和_label指针初始化为NULL&lt;/p&gt;&#xD;
&lt;/fieldset&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;接着就实现GameOverScene.cpp的内容&lt;/p&gt;&#xD;
&lt;table width="100%"&gt;&#xD;
     &lt;tbody&gt;&#xD;
         &lt;tr&gt;&#xD;
             &lt;td width="50%"&gt;&lt;span style="font-size: 8pt; "&gt;&#xD;
             &lt;/span&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
             http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             --&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;&amp;nbsp;1&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000; font-size: 8pt; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;&amp;nbsp;cpp&amp;nbsp;with&amp;nbsp;cocos2d-x&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;&amp;nbsp;2&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000;"&gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;#include&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;"&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;GameOverScene.h&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;&amp;nbsp;3&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;#include&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;"&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;HelloWorldScene.h&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;&amp;nbsp;4&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;&amp;nbsp;5&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;using&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;namespace&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;cocos2d;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;&amp;nbsp;6&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;&amp;nbsp;7&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;&amp;nbsp;8&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;bool&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;GameOverScene::init()&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;&amp;nbsp;9&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;{&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;10&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;if&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;(&amp;nbsp;CCScene::init()&amp;nbsp;)&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;11&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;12&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;this&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;_layer&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;GameOverLayer::node();&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;13&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_layer&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;retain();&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;14&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;this&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;addChild(_layer);&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;15&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;16&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;true&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;17&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;18&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;19&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;20&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;false&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;21&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;22&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;}&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;23&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;24&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;GameOverScene::&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;~&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;GameOverScene()&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;25&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;{&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;26&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;if&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;(_layer)&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;27&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;28&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_layer&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;release();&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;29&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_layer&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;NULL;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;30&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;31&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;}&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;32&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;33&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;34&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;35&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;36&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;37&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;38&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;bool&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;GameOverLayer::init()&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;39&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;{&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;40&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;if&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;(&amp;nbsp;CCColorLayer::initWithColor(&amp;nbsp;ccc4(&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;255&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;,&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;255&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;,&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;255&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;,&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;255&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;)&amp;nbsp;)&amp;nbsp;)&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;41&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;42&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CGSize&amp;nbsp;winSize&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;CCDirector::getSharedDirector()&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;getWinSize();&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;43&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;this&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;_label&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;CCLabel::labelWithString(&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;""&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;,&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;"&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;Artial&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;32&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;);&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;44&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_label&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;retain();&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;45&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_label&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;setColor(&amp;nbsp;ccc3(&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;0&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;0&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;0&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;)&amp;nbsp;);&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;46&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_label&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;setPosition(&amp;nbsp;ccp(winSize.width&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;/&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;2&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;,&amp;nbsp;winSize.height&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;/&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;2&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;)&amp;nbsp;);&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;47&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;this&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;addChild(_label);&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;48&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;49&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;this&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;runAction(&amp;nbsp;CCSequence::actions(&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;50&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CCDelayTime::actionWithDuration(&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;3&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;),&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;51&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CCCallFunc::actionWithTarget(&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;this&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;,&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;52&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;callfunc_selector(GameOverLayer::gameOverDone)),&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;53&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NULL));&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;54&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;55&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;true&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;56&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;57&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;58&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;59&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;false&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;60&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;61&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;}&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;62&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;63&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;void&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;GameOverLayer::gameOverDone()&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;64&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;{&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;65&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;CCDirector::getSharedDirector()&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;replaceScene(&amp;nbsp;HelloWorld::scene()&amp;nbsp;);&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;66&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;}&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;67&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;68&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;GameOverLayer::&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;~&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;GameOverLayer()&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;69&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;{&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;70&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;if&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;(_label)&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;71&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;72&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_label&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;release();&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;73&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_label&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;NULL;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;74&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;75&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;}&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;76&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;77&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
             &lt;td width="50%"&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
             http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             --&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;&amp;nbsp;1&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000; font-size: 8pt; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;&amp;nbsp;objc&amp;nbsp;with&amp;nbsp;cocos2d-iphone&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;&amp;nbsp;2&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000;"&gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;#import&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;"&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;GameOverScene.h&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;&amp;nbsp;3&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;#import&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;"&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;HelloWorldScene.h&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;&amp;nbsp;4&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;&amp;nbsp;5&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;@implementation&amp;nbsp;GameOverScene&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;&amp;nbsp;6&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;@synthesize&amp;nbsp;layer&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;_layer;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;&amp;nbsp;7&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;&amp;nbsp;8&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;(id)init&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;&amp;nbsp;9&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;{&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;10&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;if&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;((self&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;[super&amp;nbsp;init]))&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;11&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;12&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.layer&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;[GameOverLayer&amp;nbsp;node];&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;13&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;14&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[self&amp;nbsp;addChild:_layer];&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;15&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;16&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;return&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;self;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;17&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;}&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;18&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;19&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;20&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;21&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;22&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;23&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;24&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;void&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;)dealloc&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;25&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;{&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;26&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;27&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;28&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;[_layer&amp;nbsp;release];&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;29&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;_layer&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;nil;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;30&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;[super&amp;nbsp;dealloc];&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;31&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;}&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;32&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;33&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;@end&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;34&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;35&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;@implementation&amp;nbsp;GameOverLayer&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;36&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;@synthesize&amp;nbsp;label&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;_label;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;37&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;38&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;(id)&amp;nbsp;init&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;39&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;{&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;40&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;if&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;(&amp;nbsp;(self&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;[super&amp;nbsp;initWithColor:ccc4(&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;255&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;,&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;255&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;,&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;255&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;,&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;255&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;)]&amp;nbsp;))&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;41&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;42&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CGSize&amp;nbsp;winSize&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;[[CCDirector&amp;nbsp;sharedDirector]&amp;nbsp;winSize];&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;43&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.label&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;[CCLabel&amp;nbsp;labelWithString:&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;@""&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;fontName:&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;@"&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;Arial&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;fontSize:&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;32&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;];&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;44&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;45&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_label.color&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;ccc3(&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;0&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;,&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;0&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;,&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;0&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;);&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;46&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_label.position&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;ccp(winSize.width&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;/&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;2&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;,&amp;nbsp;winSize.height&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;/&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;2&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;);&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;47&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[self&amp;nbsp;addChild:_label];&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;48&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;49&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[self&amp;nbsp;runAction:[CCSequence&amp;nbsp;actions:&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;50&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[CCDelayTime&amp;nbsp;actionWithDuration:&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;3&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;],&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;51&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[CCCallFunc&amp;nbsp;actionWithTarget:self&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;52&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;selector:@selector(gameOverDone)],&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;53&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nil]];&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;54&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;55&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;return&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;self;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;56&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;}&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;57&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;58&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;59&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;60&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;61&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;62&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;63&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;void&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;)gameOverDone&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;64&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;{&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;65&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;[[CCDirector&amp;nbsp;sharedDirector]&amp;nbsp;replaceScene:[HelloWorld&amp;nbsp;scene]];&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;66&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;}&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;67&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;68&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;void&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;)dealloc&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;69&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;{&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;70&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;71&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;72&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;[_label&amp;nbsp;release];&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;73&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;_label&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;nil;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;74&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;[super&amp;nbsp;dealloc];&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;75&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;}&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;76&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;77&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;@end&lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
     &lt;/tbody&gt;&#xD;
&lt;/table&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;fieldset&gt;&lt;legend&gt;&lt;strong&gt;转换要点&lt;/strong&gt;&lt;/legend&gt;&#xD;
&lt;p&gt;1. 再次注意GameOverLayer._label和GameOverScene._layer两个属性。这两个属性在objc的头文件里被声明为@property (nonatomic, retain)，也就是被retain了一次，所以在dealloc里才要调用release方法。同样地，我们在~GameOverLayer()和~GameOverScene()析构函数里分别release()了这两个属性，但这个release需要和一个retain对应，所以在两个init方法里都分别添加了_label-&amp;gt;retain()和_layer-&amp;gt;retain();&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;2. 关于NSAutoReleasePool, cocos2d-x里也有个模仿实现，这个简单的垃圾回收机制对C++编程来说是个福音；它使用起来和iOS上的NSAutoReleasePool原则一样，参考苹果的文档 http://developer.apple.com/library/ios/#documentation/cocoa/reference/foundation/Classes/NSAutoreleasePool_Class/Reference/Reference.html&lt;/p&gt;&#xD;
&lt;p&gt;简而言之就是，在使用cocos2d-x中继承自NSObject类的对象指针时，以下两种情况是需要用户多调一个release&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
     &lt;li&gt;类对象是用户自己new出来的。比如CCSprite *sprite = new CCSprite();&lt;/li&gt;&#xD;
     &lt;li&gt;类对象是通过某个静态函数建立并返回的，比如CCSprite *sprite = CCSprite::spriteWithFile(...)，这种情况不需要用户release；但如果你接着调用了sprite-&amp;gt;retain(), 那么就需要一个sprite-&amp;gt;release()对应&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;这个山寨版的NSAutoReleasePool使用和调试细节，多释放了或未释放了应如何处理，我会另外写篇文章描述&amp;nbsp;&lt;/p&gt;&#xD;
&lt;/fieldset&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;注意，上面GameOverScene.cpp里有两个对象，一个场景(scene)和一个图层(layer)，场景可以包含多个图层，而这个图层只在屏幕正中间放了一个文字标签(label)，显示3秒种后返回到HelloWorldScene中。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;最后，为了调用起这个GameOverScene，我们需要在HelloWorldScene中添加一些游戏逻辑代码。先得添加一个变量，判断我们的带头大哥一共用飞镖干掉了多少杂兵。在class HelloWorld中添加一个成员变量:&lt;/p&gt;&#xD;
&lt;table width="100%"&gt;&#xD;
     &lt;tbody&gt;&#xD;
         &lt;tr&gt;&#xD;
             &lt;td width="50%"&gt;&lt;span style="font-size: 8pt; "&gt;&#xD;
             &lt;/span&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
             http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             --&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;1&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000; font-size: 8pt; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;&amp;nbsp;cpp&amp;nbsp;with&amp;nbsp;cocos2d-x&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;2&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000;"&gt;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;protected&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;:&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;3&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;int&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;_projectilesDestroyed;&lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
             &lt;td width="50%"&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
             http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             --&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;1&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000; font-size: 8pt; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;&amp;nbsp;objc&amp;nbsp;with&amp;nbsp;cocos2d-iphone&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;2&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000;"&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;3&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;int&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;_projectilesDestroyed;&lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
     &lt;/tbody&gt;&#xD;
&lt;/table&gt;&#xD;
&lt;p&gt;然后在HelloWorldScene.cpp中，添加对GameOverScene.h的引用&lt;/p&gt;&#xD;
&lt;table width="100%"&gt;&#xD;
     &lt;tbody&gt;&#xD;
         &lt;tr&gt;&#xD;
             &lt;td width="50%"&gt;&lt;span style="font-size: 8pt; "&gt;&#xD;
             &lt;/span&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
             http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             --&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;&amp;nbsp;cpp&amp;nbsp;with&amp;nbsp;cocos2d-x&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;#include&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;"&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;GameOverScene.h&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;"&lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
             &lt;td width="50%"&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
             http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             --&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;&amp;nbsp;objc&amp;nbsp;with&amp;nbsp;cocos2d-iphone&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;#import&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;"&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;GameOverScene.h&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;"&lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
     &lt;/tbody&gt;&#xD;
&lt;/table&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;在HelloWorld::update方法中的removeChild(target)后面的targetsToDelete循环中增加计数并检查获胜条件，获胜了就显示"You Win!"界面&lt;/p&gt;&#xD;
&lt;table width="100%"&gt;&#xD;
     &lt;tbody&gt;&#xD;
         &lt;tr&gt;&#xD;
             &lt;td width="50%"&gt;&lt;span style="font-size: 8pt; "&gt;&#xD;
             &lt;/span&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
             http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             --&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;&amp;nbsp;cpp&amp;nbsp;with&amp;nbsp;cocos2d-x&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;_projectilesDestroyed&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;++&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;if&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;(_projectilesDestroyed&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;30&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;)&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&#xD;
             {&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&#xD;
             &amp;nbsp;&amp;nbsp;GameOverScene&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;gameOverScene&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;GameOverScene::node();&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&#xD;
             &amp;nbsp;&amp;nbsp;gameOverScene&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;getLayer()&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;getLabel()&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;setString(&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;"&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;You&amp;nbsp;Win!&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;);&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&#xD;
             &amp;nbsp;&amp;nbsp;CCDirector::getSharedDirector()&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;replaceScene(gameOverScene);&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&#xD;
             }&lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
             &lt;td width="50%"&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
             http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             --&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;&amp;nbsp;objc&amp;nbsp;with&amp;nbsp;cocos2d-iphone&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;_projectilesDestroyed&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;++&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;if&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;(_projectilesDestroyed&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;30&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;)&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&#xD;
             {&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&#xD;
             &amp;nbsp;&amp;nbsp;GameOverScene&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;gameOverScene&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;[GameOverScene&amp;nbsp;node];&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&#xD;
             &amp;nbsp;&amp;nbsp;[gameOverScene.layer.label&amp;nbsp;setString:&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;@"&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;You&amp;nbsp;Win!&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;];&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&#xD;
             &amp;nbsp;&amp;nbsp;[[CCDirector&amp;nbsp;sharedDirector]&amp;nbsp;replaceScene:gameOverScene];&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&#xD;
             }&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
     &lt;/tbody&gt;&#xD;
&lt;/table&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;与之匹配的是失败条件：任何一个反派小兵穿越了屏幕的最左边，你就挂了。于是修改spriteMoveFinished方法，在if (sprite-&amp;gt;getTag() == 1)条件里面增加&amp;#8220;You Lose&amp;#8221;的代码：&lt;/p&gt;&#xD;
&lt;table width="100%"&gt;&#xD;
     &lt;tbody&gt;&#xD;
         &lt;tr&gt;&#xD;
             &lt;td width="50%"&gt;&lt;span style="font-size: 8pt; "&gt;&#xD;
             &lt;/span&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
             http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             --&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;&amp;nbsp;cpp&amp;nbsp;with&amp;nbsp;cocos2d-x&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;GameOverScene&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;gameOverScene&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;GameOverScene::node();&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&#xD;
             gameOverScene&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;getLayer()&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;getLabel()&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;setString(&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;"&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;You&amp;nbsp;Lose&amp;nbsp;:[&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;);&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&#xD;
             CCDirector::getSharedDirector()&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;replaceScene(gameOverScene);&lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
             &lt;td width="50%"&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
             http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             --&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;&amp;nbsp;objc&amp;nbsp;with&amp;nbsp;cocos2d-iphone&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;GameOverScene&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;gameOverScene&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;[GameOverScene&amp;nbsp;node];&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&#xD;
             [gameOverScene.layer.label&amp;nbsp;setString:&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;@"&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;You&amp;nbsp;Lose&amp;nbsp;:[&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;];&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&#xD;
             [[CCDirector&amp;nbsp;sharedDirector]&amp;nbsp;replaceScene:gameOverScene];&lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
     &lt;/tbody&gt;&#xD;
&lt;/table&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;最后编译并运行整个游戏项目，这样你就可以听到带头大哥扔飞镖同时很嚣张地发出的DIU~DIU~的声音，还有很HIGH的背景音乐循环播放；另一方面，游戏赢或输了会有一个界面提示。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;这个游戏至此，已经在模拟器上100%完成了。下一篇我们讲如何做交叉编译成linux版本(也就是Uphone真机运行的版本), 如何打包图片和音乐资源到程序二进制中防止被拷贝、以及如何用制作成Uphone安装包发布。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;fieldset&gt;&lt;legend&gt;系列教程&lt;/legend&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/walzer/archive/2010/10/10/1847089.html"&gt;如何用cocos2d-x来开发简单的Uphone游戏：(一) 下载安装和HelloWorld&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/walzer/archive/2010/10/10/1847100.html"&gt;如何用cocos2d-x来开发简单的Uphone游戏：(二) 移动的精灵&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/walzer/archive/2010/10/11/1848106.html"&gt;如何用cocos2d-x来开发简单的Uphone游戏：(三) 射击子弹 &amp;amp; 碰撞检测&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/walzer/archive/2010/10/12/1849063.html"&gt;如何用cocos2d-x来开发简单的Uphone游戏：(四) 音乐音效 &amp;amp; 最后的润色&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/walzer/archive/2010/10/22/1858155.html"&gt;如何用cocos2d-x来开发简单的Uphone游戏：(五) 打包和发布&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;/fieldset&gt;&lt;a href="http://www.cnblogs.com/walzer/archive/2010/10/12/1849063.html"&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;/a&gt;&#xD;
&lt;p&gt;&lt;span  style="font-family: Verdana,'Lucida Grande',Arial,Helvetica,sans-serif; line-height: 18px; font-size: 12px;"&gt;&lt;strong&gt;著作权声明：本文由&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;&lt;a href="http://www.walzer.cn/" style="color: #1d58d1; text-decoration: none;"&gt;http://www.walzer.cn/&lt;/a&gt;原创，欢迎转载分享。请尊重作者劳动，转载时保留该声明和作者博客链接，谢谢！&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;img src="http://www.cnblogs.com/walzer/aggbug/1849063.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/walzer/archive/2010/10/12/1849063.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/walzer/archive/2010/10/11/1848106.html</id><title type="text">如何用cocos2d-x来开发简单的Uphone游戏：(三) 射击子弹 &amp;amp; 碰撞检测</title><summary type="text">cocos2d-x.org开源社区把iPhone上知名的cocos2d游戏引擎翻译成C++语言，并在国产的Uphone平台上运行。本系列教程在Ray Wenderlic的 How To Make A Simple iPhone Game with Cocos2D 基础上，从头到尾解释了如何把Wenderlic的Cocos2DSimpleGame从objective c翻译成C++语言，从cocos2d-iphone移植到cocos2d-x并在uphone上运行，及过程中的细节注意点。</summary><published>2010-10-11T09:45:00Z</published><updated>2010-10-11T09:45:00Z</updated><author><name>Walzer</name><uri>http://www.cnblogs.com/walzer/</uri></author><link rel="alternate" href="http://www.cnblogs.com/walzer/archive/2010/10/11/1848106.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/walzer/archive/2010/10/11/1848106.html"/><content type="html">&lt;p&gt;&lt;strong style="font-size: 18pt;"&gt;五、射击子弹&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;首先，我们先让这游戏里唯一的图层可以支持触摸。添加下面一行到init方法：&amp;nbsp;&lt;/p&gt;&#xD;
&lt;table width="100%"&gt;&#xD;
     &lt;tbody&gt;&#xD;
         &lt;tr&gt;&#xD;
             &lt;td width="50%"&gt;&lt;span style="font-size: 8pt;"&gt;&#xD;
             &lt;/span&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;&amp;nbsp;cpp&amp;nbsp;with&amp;nbsp;cocos2d-x&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;this&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;setIsTouchEnabled(&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;true&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;);&lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
             &lt;td width="50%"&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;&amp;nbsp;objc&amp;nbsp;with&amp;nbsp;cocos2d-iphone&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;self.isTouchEnabled&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;YES;&lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
     &lt;/tbody&gt;&#xD;
&lt;/table&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;因为图层已经支持触摸，所以我们可以收到触摸事件的回调。现在我们实现ccTouchesEnded方法，只要用户完成触摸，该方法就会被调用。&lt;/p&gt;&#xD;
&lt;p&gt;先在HelloWorldScene.h里增加函数声明&amp;nbsp;void ccTouchesEnded(cocos2d::NSSet* touches, cocos2d::UIEvent* event);&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;然后到HelloWorldScene.cpp里增加函数实现&lt;/p&gt;&#xD;
&lt;span style="font-size: 8pt;"&gt;&#xD;
&lt;/span&gt;&#xD;
&lt;table width="100%"&gt;&#xD;
     &lt;tbody&gt;&#xD;
     &lt;/tbody&gt;&#xD;
     &lt;tbody&gt;&#xD;
         &lt;tr&gt;&#xD;
             &lt;td width="50%"&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
             http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             --&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;&amp;nbsp;cpp&amp;nbsp;with&amp;nbsp;cocos2d-x&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;void&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;HelloWorld::ccTouchesEnded(NSSet&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;touches,&amp;nbsp;UIEvent&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;event&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;)&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             {&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;&amp;nbsp;Choose&amp;nbsp;one&amp;nbsp;of&amp;nbsp;the&amp;nbsp;touches&amp;nbsp;to&amp;nbsp;work&amp;nbsp;with&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;CCTouch&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;touch&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;(CCTouch&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;)(&amp;nbsp;touches&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;anyObject()&amp;nbsp;);&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;CGPoint&amp;nbsp;location&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;touch&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;locationInView(touch&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;view());&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;location&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;CCDirector::getSharedDirector()&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;convertToGL(location);&lt;br /&gt;&#xD;
             &lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;&amp;nbsp;Set&amp;nbsp;up&amp;nbsp;initial&amp;nbsp;location&amp;nbsp;of&amp;nbsp;projectile&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;CGSize&amp;nbsp;winSize&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;CCDirector::getSharedDirector()&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;getWinSize();&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;CCSprite&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;projectile&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;CCSprite::spriteWithFile(&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt;"&gt;"&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt;"&gt;Projectile.png&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt;"&gt;"&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;,&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CGRectMake(&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt;"&gt;0&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt;"&gt;0&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt;"&gt;20&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt;"&gt;20&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;));&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;projectile&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;setPosition(&amp;nbsp;ccp(&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt;"&gt;20&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;,&amp;nbsp;winSize.height&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;/&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt;"&gt;2&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;)&amp;nbsp;);&lt;br /&gt;&#xD;
             &lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;&amp;nbsp;Determinie&amp;nbsp;offset&amp;nbsp;of&amp;nbsp;location&amp;nbsp;to&amp;nbsp;projectile&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;int&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;offX&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;location.x&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;projectile&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;getPosition().x;&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;int&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;offY&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;location.y&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;projectile&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;getPosition().y;&lt;br /&gt;&#xD;
             &lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;&amp;nbsp;Bail&amp;nbsp;out&amp;nbsp;if&amp;nbsp;we&amp;nbsp;are&amp;nbsp;shooting&amp;nbsp;down&amp;nbsp;or&amp;nbsp;backwards&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;if&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;(offX&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;lt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt;"&gt;0&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;return&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;;&lt;br /&gt;&#xD;
             &lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;&amp;nbsp;Ok&amp;nbsp;to&amp;nbsp;add&amp;nbsp;now&amp;nbsp;-&amp;nbsp;we've&amp;nbsp;double&amp;nbsp;checked&amp;nbsp;position&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;this&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;addChild(projectile);&lt;br /&gt;&#xD;
             &lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;&amp;nbsp;Determine&amp;nbsp;where&amp;nbsp;we&amp;nbsp;wish&amp;nbsp;to&amp;nbsp;shoot&amp;nbsp;the&amp;nbsp;projectile&amp;nbsp;to&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;int&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;realX&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;winSize.width&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;+&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;(projectile&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;getContentSize().width&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;/&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt;"&gt;2&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;);&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;float&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;ratio&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;float&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;)offY&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;/&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;float&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;)offX;&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;int&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;realY&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;(realX&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;ratio)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;+&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;projectile&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;getPosition().y;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;CGPoint&amp;nbsp;realDest&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;ccp(realX,&amp;nbsp;realY);&lt;br /&gt;&#xD;
             &lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;&amp;nbsp;Determine&amp;nbsp;the&amp;nbsp;length&amp;nbsp;of&amp;nbsp;how&amp;nbsp;far&amp;nbsp;we're&amp;nbsp;shooting&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;int&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;offRealX&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;realX&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;projectile&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;getPosition().x;&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;int&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;offRealY&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;realY&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;projectile&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;getPosition().y;&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;float&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;length&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;sqrtf((offRealX&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;offRealX)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;+&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;(offRealY&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;offRealY));&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;float&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;velocity&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt;"&gt;480&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;/&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt;"&gt;1&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;&amp;nbsp;480pixels/1sec&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;float&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;realMoveDuration&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;length&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;/&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;velocity;&lt;br /&gt;&#xD;
             &lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;&amp;nbsp;Move&amp;nbsp;projectile&amp;nbsp;to&amp;nbsp;actual&amp;nbsp;endpoint&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;projectile&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;runAction(&amp;nbsp;CCSequence::actions(&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CCMoveTo::actionWithDuration(realMoveDuration,&amp;nbsp;realDest),&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CCCallFuncN::actionWithTarget(&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;this&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;p&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; callfuncN_selector(HelloWorld::spriteMoveFinished)),&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;NULL)&amp;nbsp;);&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             }&lt;/span&gt;&lt;/p&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
             &lt;td width="50%"&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
             http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             --&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;&amp;nbsp;objc&amp;nbsp;with&amp;nbsp;cocos2d-iphone&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;void&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;)ccTouchesEnded:(NSSet&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;)touches&amp;nbsp;withEvent:(UIEvent&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;)&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;event&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             {&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;&amp;nbsp;Choose&amp;nbsp;one&amp;nbsp;of&amp;nbsp;the&amp;nbsp;touches&amp;nbsp;to&amp;nbsp;work&amp;nbsp;with&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;UITouch&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;touch&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;[touches&amp;nbsp;anyObject];&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;CGPoint&amp;nbsp;location&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;[touch&amp;nbsp;locationInView:[touch&amp;nbsp;view]];&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;location&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;[[CCDirector&amp;nbsp;sharedDirector]&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;convertToGL:location];&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;&amp;nbsp;Set&amp;nbsp;up&amp;nbsp;initial&amp;nbsp;location&amp;nbsp;of&amp;nbsp;projectile&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;CGSize&amp;nbsp;winSize&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;[[CCDirector&amp;nbsp;sharedDirector]&amp;nbsp;winSize];&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;CCSprite&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;projectile&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;[CCSprite&amp;nbsp;spriteWithFile:&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt;"&gt;Projectile.png&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rect:CGRectMake(&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt;"&gt;0&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt;"&gt;0&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt;"&gt;20&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt;"&gt;20&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;)];&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;projectile.position&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;ccp(&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt;"&gt;20&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;,&amp;nbsp;winSize.height&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;/&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt;"&gt;2&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;);&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;&amp;nbsp;Determine&amp;nbsp;offset&amp;nbsp;of&amp;nbsp;location&amp;nbsp;to&amp;nbsp;projectile&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;int&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;offX&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;location.x&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;projectile.position.x;&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;int&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;offY&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;location.y&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;projectile.position.y;&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;&amp;nbsp;Bail&amp;nbsp;out&amp;nbsp;if&amp;nbsp;we&amp;nbsp;are&amp;nbsp;shooting&amp;nbsp;down&amp;nbsp;or&amp;nbsp;backwards&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;if&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;(offX&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;lt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt;"&gt;0&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;return&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;;&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;&amp;nbsp;Ok&amp;nbsp;to&amp;nbsp;add&amp;nbsp;now&amp;nbsp;-&amp;nbsp;we've&amp;nbsp;double&amp;nbsp;checked&amp;nbsp;position&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;[self&amp;nbsp;addChild:projectile];&lt;br /&gt;&#xD;
             &lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;&amp;nbsp;Determine&amp;nbsp;where&amp;nbsp;we&amp;nbsp;wish&amp;nbsp;to&amp;nbsp;shoot&amp;nbsp;the&amp;nbsp;projectile&amp;nbsp;to&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;int&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;realX&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;winSize.width&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;+&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;(projectile.contentSize.width&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;/&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt;"&gt;2&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;);&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;float&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;ratio&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;float&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;)&amp;nbsp;offY&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;/&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;float&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;)&amp;nbsp;offX;&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;int&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;realY&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;(realX&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;ratio)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;+&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;projectile.position.y;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;CGPoint&amp;nbsp;realDest&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;ccp(realX,&amp;nbsp;realY);&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;&amp;nbsp;Determine&amp;nbsp;the&amp;nbsp;length&amp;nbsp;of&amp;nbsp;how&amp;nbsp;far&amp;nbsp;we're&amp;nbsp;shooting&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;int&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;offRealX&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;realX&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;projectile.position.x;&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;int&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;offRealY&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;realY&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;projectile.position.y;&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;float&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;length&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;sqrtf((offRealX&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;offRealX)&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;+&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;(offRealY&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;offRealY));&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;float&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;velocity&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt;"&gt;480&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;/&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt;"&gt;1&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;&amp;nbsp;480pixels/1sec&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;float&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;realMoveDuration&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;length&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;/&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;velocity;&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;&amp;nbsp;Move&amp;nbsp;projectile&amp;nbsp;to&amp;nbsp;actual&amp;nbsp;endpoint&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;[projectile&amp;nbsp;runAction:[CCSequence&amp;nbsp;actions:&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[CCMoveTo&amp;nbsp;actionWithDuration:realMoveDuration&amp;nbsp;position:realDest],&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[CCCallFuncN&amp;nbsp;actionWithTarget:self&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;p&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; selector:@selector(spriteMoveFinished:)],&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nil]];&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             }&lt;/span&gt;&lt;/p&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
     &lt;/tbody&gt;&#xD;
&lt;/table&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;编译后，带头大哥就可以BIU~BIU~地扔飞镖出去了。这里会产生一些float和int隐式转换导致的warning，我们为了和objc代码保持一致而在坐标计算里使用了不少int变量，实际上全部用float会更合适。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/walzer/NinjaFire.PNG" alt="" height="397" width="750" /&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong style="font-size: 18pt;"&gt;六、碰撞检测&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;光扔飞镖是杀不死人的，我们还需要加入碰撞检测。要做到这一点，首先得在场景中更好地跟踪目标和子弹。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;在这个游戏中，我们得为小怪和飞镖两种sprite加入一个tag成员变量，以区分两种不同的游戏物体。tag=1的时候这个CCSprite对象为小怪，tag=2的时候则为飞镖。由于在CCNode里面有m_nTag这个成员变量，并且有setTag和getTag方法，因此CCSprite就继承了这些方法，我们可以利用之。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;修改完毕，现在可以专心地跟踪小怪和飞镖了。把以下代码添加到class HelloWorld的声明中&lt;/p&gt;&#xD;
&lt;table width="100%"&gt;&#xD;
     &lt;tbody&gt;&#xD;
         &lt;tr&gt;&#xD;
             &lt;td width="50%"&gt;&lt;span style="font-size: 8pt;"&gt;&#xD;
             &lt;/span&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
             http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             --&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;&amp;nbsp;cpp&amp;nbsp;with&amp;nbsp;cocos2d-x&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;protected&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;:&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;cocos2d::NSMutableArray&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;lt;cocos2d::CC&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;Sprite&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;*&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;_targets;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;cocos2d::NSMutableArray&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;lt;cocos2d::CC&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;Sprite&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;*&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;_projectiles;&lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
             &lt;td width="50%"&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
             http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             --&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;&amp;nbsp;objc&amp;nbsp;with&amp;nbsp;cocos2d-iphone&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;NSMutableArray&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;_targets;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;NSMutableArray&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;_projectiles;&lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
     &lt;/tbody&gt;&#xD;
&lt;/table&gt;&#xD;
&lt;p&gt;在这里，cocos2d-x模拟iOS的SDK实现了NSMutableArray,里面只能放NSObject及其子类。但不同的是，你必须告诉他里面要放的是哪种具体类型。&lt;/p&gt;&#xD;
&lt;p&gt;然后在init方法中初始化这两个数组&lt;/p&gt;&#xD;
&lt;table width="100%"&gt;&#xD;
     &lt;tbody&gt;&#xD;
         &lt;tr&gt;&#xD;
             &lt;td width="50%"&gt;&lt;span style="font-size: 8pt;"&gt;&#xD;
             &lt;/span&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
             http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             --&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;&amp;nbsp;cpp&amp;nbsp;with&amp;nbsp;cocos2d-x&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;&amp;nbsp;Initialize&amp;nbsp;arrays&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;_targets&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;new&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;NSMutableArray&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;lt;CC&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;Sprite&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;*&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             _projectiles&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;new&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;NSMutableArray&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;lt;CC&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;Sprite&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;*&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;;&lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
             &lt;td width="50%"&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
             http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             --&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;&amp;nbsp;objc&amp;nbsp;with&amp;nbsp;cocos2d-iphone&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;&amp;nbsp;Initialize&amp;nbsp;arrays&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;_targets&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;[[NSMutableArray&amp;nbsp;alloc]&amp;nbsp;init];&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             _projectiles&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;[[NSMutableArray&amp;nbsp;alloc]&amp;nbsp;init];&lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
     &lt;/tbody&gt;&#xD;
&lt;/table&gt;&#xD;
&lt;p&gt;同时在类的析构函数里释放之. 严谨地说，我们还应在class HelloWorld的构造函数里初始化_targets和_projectiles两个指针为NULL&lt;/p&gt;&#xD;
&lt;table width="100%"&gt;&#xD;
     &lt;tbody&gt;&#xD;
         &lt;tr&gt;&#xD;
             &lt;td width="50%"&gt;&lt;span style="font-size: 8pt;"&gt;&#xD;
             &lt;/span&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
             http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             --&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;&amp;nbsp;cpp&amp;nbsp;with&amp;nbsp;cocos2d-x&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;HelloWorld::&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;~&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;HelloWorld()&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             {&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;if&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;(_targets)&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_targets&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;release();&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_targets&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;NULL;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;}&lt;br /&gt;&#xD;
             &lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;if&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;(_projectiles)&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_projectiles&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;release();&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_projectiles&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;NULL;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;}&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;&amp;nbsp;cpp&amp;nbsp;don't&amp;nbsp;need&amp;nbsp;to&amp;nbsp;call&amp;nbsp;super&amp;nbsp;dealloc&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;&amp;nbsp;virtual&amp;nbsp;destructor&amp;nbsp;will&amp;nbsp;do&amp;nbsp;this&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;}&lt;br /&gt;&#xD;
             &lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             HelloWorld::HelloWorld()&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             :_targets(NULL)&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             ,_projectiles(NULL)&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             {&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             }&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
             &lt;td width="50%"&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
             http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             --&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;&amp;nbsp;objc&amp;nbsp;with&amp;nbsp;cocos2d-iphone&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;void&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;)&amp;nbsp;dealloc&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             {&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;[_targets&amp;nbsp;release];&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;_targets&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;nil;&lt;br /&gt;&#xD;
             &lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;[_projectiles&amp;nbsp;release];&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;_projectiles&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;nil;&lt;br /&gt;&#xD;
             &lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;&amp;nbsp;don't&amp;nbsp;forget&amp;nbsp;to&amp;nbsp;call&amp;nbsp;"super&amp;nbsp;dealloc"&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;[super&amp;nbsp;dealloc];&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             }&lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;p&gt;&lt;/p&gt;&#xD;
             &lt;p&gt;&lt;/p&gt;&#xD;
             &lt;p&gt;&lt;/p&gt;&#xD;
             &lt;p&gt;&lt;/p&gt;&#xD;
             &lt;p&gt;&lt;/p&gt;&#xD;
             &lt;p&gt;&lt;/p&gt;&#xD;
             &lt;p&gt;&lt;/p&gt;&#xD;
             &lt;p&gt;&lt;/p&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
     &lt;/tbody&gt;&#xD;
&lt;/table&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;现在修改addTarget方法，添加新目标到目标数组中，并给它设置Tag标记以和飞镖sprite区分开来&lt;/p&gt;&#xD;
&lt;table width="100%"&gt;&#xD;
     &lt;tbody&gt;&#xD;
         &lt;tr&gt;&#xD;
             &lt;td width="50%"&gt;&lt;span style="font-size: 8pt;"&gt;&#xD;
             &lt;/span&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
             http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             --&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;&amp;nbsp;cpp&amp;nbsp;with&amp;nbsp;cocos2d-x&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;&amp;nbsp;Add&amp;nbsp;to&amp;nbsp;targets&amp;nbsp;array&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;taget&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;setTag(&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt;"&gt;1&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;);&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             _targets&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;addObject(target);&lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
             &lt;td width="50%"&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
             http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             --&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;&amp;nbsp;objc&amp;nbsp;with&amp;nbsp;cocos2d-iphone&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;&amp;nbsp;Add&amp;nbsp;to&amp;nbsp;targets&amp;nbsp;array&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;target.tag&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt;"&gt;1&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             [_targets&amp;nbsp;addObject:target];&lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
     &lt;/tbody&gt;&#xD;
&lt;/table&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;然后，修改spriteMoveFinished方法，根据标记的不同，在对应的数组中移除精灵&lt;/p&gt;&#xD;
&lt;table width="100%"&gt;&#xD;
     &lt;tbody&gt;&#xD;
         &lt;tr&gt;&#xD;
             &lt;td width="50%"&gt;&lt;span style="font-size: 8pt;"&gt;&#xD;
             &lt;/span&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
             http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             --&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;&amp;nbsp;cpp&amp;nbsp;with&amp;nbsp;cocos2d-x&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;void&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;HelloWorld::spriteMoveFinished(CCNode&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;sender)&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             {&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;CCSprite&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;sprite&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;(CCSprite&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;)sender;&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;this&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;removeChild(sprite,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;true&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;);&lt;br /&gt;&#xD;
             &lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;if&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;(sprite&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;getTag()&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt;"&gt;1&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;)&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;&amp;nbsp;target&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_targets&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;removeObject(sprite);&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;}&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;if&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;(sprite&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;getTag()&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt;"&gt;2&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;&amp;nbsp;projectile&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_projectiles&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;removeObject(sprite);&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;}&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             }&lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
             &lt;td width="50%"&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
             http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             --&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;&amp;nbsp;objc&amp;nbsp;with&amp;nbsp;cocos2d-iphone&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;void&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;)spriteMoveFinished:(id)sender&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             {&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;CCSprite&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;sprite&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;(CCSprite&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;)sender;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;[self&amp;nbsp;removeChild:sprite&amp;nbsp;cleanup:YES];&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;if&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;(sprite.tag&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt;"&gt;1&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;&amp;nbsp;target&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[_targets&amp;nbsp;removeObject:sprite];&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;if&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;(sprite.tag&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt;"&gt;2&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;&amp;nbsp;projectile&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[_projectiles&amp;nbsp;removeObject:sprite];&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;}&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             }&lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
     &lt;/tbody&gt;&#xD;
&lt;/table&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;编译并运行项目以确保一切正常。此时还看不出什么明显不同，但我们可以利用前面加的tag标记来实现碰撞检测&lt;/p&gt;&#xD;
&lt;p&gt;现在往class HelloWorld里添加一个update方法，计算碰撞，并让碰撞了的飞镖和小杂兵同时从屏幕消失&lt;/p&gt;&#xD;
&lt;table width="100%"&gt;&#xD;
     &lt;tbody&gt;&#xD;
         &lt;tr&gt;&#xD;
             &lt;td width="50%"&gt;&lt;span style="font-size: 8pt;"&gt;&#xD;
             &lt;/span&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
             http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             --&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;&amp;nbsp;cpp&amp;nbsp;with&amp;nbsp;cocos2d-x&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;void&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;HelloWorld::update(ccTime&amp;nbsp;dt)&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             {&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;NSMutableArray&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;lt;CC&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;Sprite&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;*&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;projectilesToDelete&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;p&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;&lt;span  style="white-space: pre;"&gt; &lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;new&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;NSMutableArray&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;lt;CC&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;Sprite&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;*&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;NSMutableArray&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;lt;CC&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;Sprite&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;*&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;::NSMutableArrayIterator&amp;nbsp;it,&amp;nbsp;jt;&lt;br /&gt;&#xD;
             &lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;for&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;(it&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;_projectiles&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;begin();&amp;nbsp;it&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;!=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;_projectiles&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;end();&amp;nbsp;it&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;++&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;)&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;CCSprite&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;projectile&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;it;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CGRect&amp;nbsp;projectileRect&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;CGRectMake(&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span  style="white-space: pre;"&gt;	&lt;/span&gt;projectile&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;getPosition().x&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;(projectile&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;getContentSize().width&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;/&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt;"&gt;2&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;),&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span  style="white-space: pre;"&gt;	&lt;/span&gt;projectile&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;getPosition().y&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;(projectile&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;getContentSize().height&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;/&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt;"&gt;2&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;),&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span  style="white-space: pre;"&gt;	&lt;/span&gt;projectile&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;getContentSize().width,&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span  style="white-space: pre;"&gt;	&lt;/span&gt;projectile&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;getContentSize().height);&lt;br /&gt;&#xD;
             &lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NSMutableArray&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;lt;CC&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;Sprite&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;*&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;targetsToDelete&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;new&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;NSMutableArray&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;lt;CC&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;Sprite&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;*&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;;&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;for&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;(jt&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;_targets&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;begin();&amp;nbsp;jt&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;!=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;_targets&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;end();&amp;nbsp;jt&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;++&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;)&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;CCSprite&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;target&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;jt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CGRect&amp;nbsp;targetRect&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;CGRectMake(&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span  style="white-space: pre;"&gt;	&lt;/span&gt;target&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;getPosition().x&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;(target&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;getContentSize().width&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;/&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt;"&gt;2&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;),&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span  style="white-space: pre;"&gt;	&lt;/span&gt;target&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;getPosition().y&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;(target&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;getContentSize().height&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;/&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt;"&gt;2&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;),&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span  style="white-space: pre;"&gt;	&lt;/span&gt;target&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;getContentSize().width,&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span  style="white-space: pre;"&gt;	&lt;/span&gt;target&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;getContentSize().height);&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;if&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;(CGRect::CGRectIntersectsRect(projectileRect,&amp;nbsp;targetRect))&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;targetsToDelete&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;addObject(target);&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&#xD;
             &lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;for&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;(jt&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;targetsToDelete&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;begin();&amp;nbsp;jt&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;!=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;targetsToDelete&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;end();&amp;nbsp;jt&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;++&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;)&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;CCSprite&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;target&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;jt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_targets&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;removeObject(target);&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;this&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;removeChild(target,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;true&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;);&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&#xD;
             &lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;if&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;(targetsToDelete&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;count()&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt;"&gt;0&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;)&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;projectilesToDelete&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;addObject(projectile);&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;targetsToDelete&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;release();&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;}&lt;br /&gt;&#xD;
             &lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;for&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;(it&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;projectilesToDelete&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;begin();&amp;nbsp;it&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;!=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;projectilesToDelete&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;end();&amp;nbsp;it&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;++&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;)&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;CCSprite&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;projectile&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;it;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_projectiles&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;removeObject(projectile);&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;this&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;removeChild(projectile,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;true&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;);&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;}&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;projectilesToDelete&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;release();&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             }&lt;/span&gt;&lt;/p&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
             &lt;td width="50%"&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
             http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             --&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;&amp;nbsp;objc&amp;nbsp;with&amp;nbsp;cocos2d-iphone&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;void&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;)update:(ccTime)dt&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             {&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;NSMutableArray&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;projectilesToDelete&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;p&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&lt;span  style="white-space: pre;"&gt; &lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;[[NSMutableArray&amp;nbsp;alloc]&amp;nbsp;init];&lt;br /&gt;&#xD;
             &lt;br /&gt;&#xD;
             &lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;for&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;(CCSprite&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;projectile&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;in&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;_projectiles)&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
             &lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CGRect&amp;nbsp;projectileRect&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;CGRectMake(&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span  style="white-space: pre;"&gt;	&lt;/span&gt;projectile.position.x&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;(projectile.contentSize.width&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;/&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt;"&gt;2&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;),&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span  style="white-space: pre;"&gt;	&lt;/span&gt;projectile.position.y&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;(projectile.contentSize.height&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;/&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt;"&gt;2&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;),&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span  style="white-space: pre;"&gt;	&lt;/span&gt;projectile.contentSize.width,&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span  style="white-space: pre;"&gt;	&lt;/span&gt;projectile.contentSize.height);&lt;br /&gt;&#xD;
             &lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NSMutableArray&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;targetsToDelete&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;[[NSMutableArray&amp;nbsp;alloc]&amp;nbsp;init];&lt;br /&gt;&#xD;
             &lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;for&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;(CCSprite&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;target&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;in&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;_targets)&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CGRect&amp;nbsp;targetRect&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;CGRectMake(&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span  style="white-space: pre;"&gt;	&lt;/span&gt;target.position.x&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;(target.contentSize.width&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;/&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt;"&gt;2&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;),&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span  style="white-space: pre;"&gt;	&lt;/span&gt;target.position.y&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;(target.contentSize.height&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;/&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt;"&gt;2&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;),&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span  style="white-space: pre;"&gt;	&lt;/span&gt;target.contentSize.width,&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span  style="white-space: pre;"&gt;	&lt;/span&gt;target.contentSize.height);&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;if&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;(CGRectIntersectsRect(projectileRect,&amp;nbsp;targetRect))&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[targetsToDelete&amp;nbsp;addObject:target];&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;for&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;(CCSprite&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;target&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;in&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;targetsToDelete)&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
             &lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[_targets&amp;nbsp;removeObject:target];&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[self&amp;nbsp;removeChild:target&amp;nbsp;cleanup:YES];&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;if&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;(targetsToDelete.count&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt;"&gt;0&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;)&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[projectilesToDelete&amp;nbsp;addObject:projectile];&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[targetsToDelete&amp;nbsp;release];&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;}&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;for&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;(CCSprite&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;projectile&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;in&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&amp;nbsp;projectilesToDelete)&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
             &lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[_projectiles&amp;nbsp;removeObject:projectile];&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[self&amp;nbsp;removeChild:projectile&amp;nbsp;cleanup:YES];&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;}&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             &amp;nbsp;&amp;nbsp;[projectilesToDelete&amp;nbsp;release];&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;&#xD;
             }&lt;/span&gt;&lt;/p&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
     &lt;/tbody&gt;&#xD;
&lt;/table&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;上面有个注意点，我们用来检查矩形交叉的函数。实际上各平台都有用来检查矩形相交的函数，我们这里为了方便iphone开发者转换代码，实现了静态的CGRect::CGRectInterestcRect方法。上面的代码大致就是，遍历小怪和飞镖数组，一旦发现有矩形相交（碰撞），就把他们分别添加到targetsToDelete和projectileToDelete数组中，然后删除之&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;在运行之前，你还需要让这个update方法不断地被调用，可以在init方法中添加如下代码达成这个目的&lt;/p&gt;&#xD;
&lt;table width="100%"&gt;&#xD;
     &lt;tbody&gt;&#xD;
         &lt;tr&gt;&#xD;
             &lt;td width="50%"&gt;&lt;span style="font-size: 8pt;"&gt;&#xD;
             &lt;/span&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
             http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             --&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;&amp;nbsp;cpp&amp;nbsp;with&amp;nbsp;cocos2d-x&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt;"&gt;this&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;schedule(&amp;nbsp;schedule_selector(HelloWorld::update)&amp;nbsp;);&lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
             &lt;td width="50%"&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
             http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
             &lt;br/ /&gt;&#xD;
             --&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt;"&gt;&amp;nbsp;objc&amp;nbsp;with&amp;nbsp;cocos2d-iphone&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt;"&gt;[self&amp;nbsp;schedule:@selector(update:)];&lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
     &lt;/tbody&gt;&#xD;
&lt;/table&gt;&#xD;
&lt;p&gt;编译运行，你就可以看到飞镖和小怪碰撞时，它们同时从屏幕消失了。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;至此，一个简单cocos2d游戏的雏形就已经完成了。在下一篇里，我们会对这个游戏进行最后的润色，添加背景音乐和音效，已经过关和GAME OVER的提示界面。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;fieldset&gt;&lt;legend&gt;系列教程&lt;/legend&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/walzer/archive/2010/10/10/1847089.html"&gt;如何用cocos2d-x来开发简单的Uphone游戏：(一) 下载安装和HelloWorld&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/walzer/archive/2010/10/10/1847100.html"&gt;如何用cocos2d-x来开发简单的Uphone游戏：(二) 移动的精灵&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/walzer/archive/2010/10/11/1848106.html"&gt;如何用cocos2d-x来开发简单的Uphone游戏：(三) 射击子弹 &amp;amp; 碰撞检测&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/walzer/archive/2010/10/12/1849063.html"&gt;如何用cocos2d-x来开发简单的Uphone游戏：(四) 音乐音效 &amp;amp; 最后的润色&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/walzer/archive/2010/10/22/1858155.html"&gt;如何用cocos2d-x来开发简单的Uphone游戏：(五) 打包发布&lt;a&gt;&lt;/p&gt;&#xD;
&lt;/fieldset&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span  style="font-family: Verdana,'Lucida Grande',Arial,Helvetica,sans-serif; line-height: 18px; font-size: 12px;"&gt;&lt;strong&gt;著作权声明：本文由&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;&lt;a href="http://www.walzer.cn/" style="color: #1d58d1; text-decoration: none;"&gt;http://www.walzer.cn/&lt;/a&gt;原创，欢迎转载分享。请尊重作者劳动，转载时保留该声明和作者博客链接，谢谢！&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;img src="http://www.cnblogs.com/walzer/aggbug/1848106.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/walzer/archive/2010/10/11/1848106.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/walzer/archive/2010/10/10/1847100.html</id><title type="text">如何用cocos2d-x来开发简单的Uphone游戏：(二) 移动的精灵</title><summary type="text">cocos2d-x.org开源社区把iPhone上知名的cocos2d游戏引擎翻译成C++语言，并在国产的Uphone平台上运行。本系列教程在Ray Wenderlic的 How To Make A Simple iPhone Game with Cocos2D 基础上，从头到尾解释了如何把Wenderlic的Cocos2DSimpleGame从objective c翻译成C++语言，从cocos2d-iphone移植到cocos2d-x并在uphone上运行，及过程中的细节注意点。</summary><published>2010-10-10T03:37:00Z</published><updated>2010-10-10T03:37:00Z</updated><author><name>Walzer</name><uri>http://www.cnblogs.com/walzer/</uri></author><link rel="alternate" href="http://www.cnblogs.com/walzer/archive/2010/10/10/1847100.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/walzer/archive/2010/10/10/1847100.html"/><content type="html">&lt;p&gt;&lt;span style="font-size: 18pt;"&gt;&lt;strong&gt;三、添加一个精灵&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;我们先用个简单的方式，把player, projectile, target三个PNG文件拷贝到 D:\Work7\NEWPLUS\TDA_DATA\UserData 目录下，这使其可以在模拟器上直接通过文件路径访问到。Uphone有其资源打包的方式，图片和音乐都可以打包到动态库文件内，这个另外会有教程描述，我们这里先让事情简单化。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/walzer/player.png" alt="" width="27" height="40" /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;img src="http://images.cnblogs.com/cnblogs_com/walzer/target.png" alt="" width="27" height="40" /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;img src="http://images.cnblogs.com/cnblogs_com/walzer/projectile.png" alt="" width="20" height="20" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;关于cocos2d坐标系统的规则，简而言之就是左下角为原点，向上向右按像素递增，这在Wenderlich的原文中有详细描述，我们这里就不再赘述了。直接切入代码&lt;/p&gt;&#xD;
&lt;p&gt;现在我们在HelloWorldScene.cpp里面，找到bool HelloWorld::init()函数，把它替换成下面代码&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
&lt;br/ /&gt;&#xD;
Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
&lt;br/ /&gt;&#xD;
--&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;bool&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;HelloWorld::init()&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;{&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080; font-size: 8pt; "&gt;//////////////////////////////&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;&amp;nbsp;1.&amp;nbsp;super&amp;nbsp;init&amp;nbsp;first&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;if&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;(&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;!&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;CCLayer::init()&amp;nbsp;)&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;false&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080; font-size: 8pt; "&gt;///////////////////////////&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;//&lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;&amp;nbsp;2.&amp;nbsp;add&amp;nbsp;a&amp;nbsp;menu&amp;nbsp;item&amp;nbsp;with&amp;nbsp;"X"&amp;nbsp;image,&amp;nbsp;which&amp;nbsp;is&amp;nbsp;clicked&amp;nbsp;to&amp;nbsp;quit&amp;nbsp;the&amp;nbsp;program&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;you&amp;nbsp;may&amp;nbsp;modify&amp;nbsp;it.&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;&amp;nbsp;add&amp;nbsp;a&amp;nbsp;"close"&amp;nbsp;icon&amp;nbsp;to&amp;nbsp;exit&amp;nbsp;the&amp;nbsp;progress.&amp;nbsp;it's&amp;nbsp;an&amp;nbsp;autorelease&amp;nbsp;object&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;CCMenuItemImage&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;pCloseItem&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;CCMenuItemImage::itemFromNormalImage(&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;"&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;CloseNormal.png&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;,&amp;nbsp;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;"&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;CloseSelected.png&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;,&amp;nbsp;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;this&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;,&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;menu_selector(HelloWorld::menuCloseCallback)&amp;nbsp;);&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;pCloseItem&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;setPosition(&amp;nbsp;ccp(CCDirector::getSharedDirector()&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;getWinSize().width&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;20&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;20&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;)&amp;nbsp;);&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;&amp;nbsp;create&amp;nbsp;menu,&amp;nbsp;it's&amp;nbsp;an&amp;nbsp;autorelease&amp;nbsp;object&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;CCMenu&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;pMenu&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;CCMenu::menuWithItems(pCloseItem,&amp;nbsp;NULL);&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;pMenu&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;setPosition(&amp;nbsp;CGPointZero&amp;nbsp;);&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;this&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;addChild(pMenu);&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080; font-size: 8pt; "&gt;///////////////////////////&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;//&lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;&amp;nbsp;3.&amp;nbsp;add&amp;nbsp;your&amp;nbsp;codes&amp;nbsp;below...&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;CGSize&amp;nbsp;winSize&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;CCDirector::getSharedDirector()&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;getWinSize();&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;CCSprite&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;player&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;CCSprite::spriteWithFile(&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;"&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;Player.png&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;,&amp;nbsp;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CGRectMake(&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;0&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;0&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;27&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;40&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;)&amp;nbsp;);&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;player&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;setPosition(&amp;nbsp;ccp(player&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;getContentSize().width&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;/&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;2&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;,&amp;nbsp;winSize.height&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;/&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;2&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;)&amp;nbsp;);&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;this&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;addChild(player);&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;true&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;}&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;其实我们只修改了 // 3. add your codes below 这段。&lt;/p&gt;&#xD;
&lt;p&gt;cocos2d-x和cocos2d-iphone的接口有细微的差别，不过你一旦习惯了这个差别，写起代码来就会很顺手。&lt;/p&gt;&#xD;
&lt;p&gt;我们抛开添加"X"退出按钮的一段，单纯地看一下这两段init函数的差异.&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;span style="font-size: 8pt; "&gt;&#xD;
&lt;/span&gt;&#xD;
&lt;table width="100%"&gt;&#xD;
     &lt;tbody&gt;&#xD;
     &lt;/tbody&gt;&#xD;
     &lt;tbody&gt;&#xD;
         &lt;tr width="100%"&gt;&#xD;
             &lt;td width="50%"&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;&amp;nbsp;cpp with cocos2d-x&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;bool&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;HelloWorld::init()&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;{&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;if&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;(&amp;nbsp;CCLayer::init()&amp;nbsp;)&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;CGSize&amp;nbsp;winSize&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;CCDirector::getSharedDirector()&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;getWinSize();&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;CCSprite&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;player&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;CCSprite::spriteWithFile(&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;"&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;Player.png&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;,&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008080; font-size: 8pt; "&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; CGRectMake(&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;0&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;0&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;27&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;40&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;)&amp;nbsp;);&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;player&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;setPosition(&amp;nbsp;ccp(player&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;getContentSize().width&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;/&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;2&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;,&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;winSize.height&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;/&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;2&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;)&amp;nbsp;);&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;this&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;addChild(player);&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;true&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;}&lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
             &lt;td width="50%"&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;&amp;nbsp;objc with cocos2d-iphone&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;(id)&amp;nbsp;init&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;{&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;if&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;(&amp;nbsp;(self&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;[super&amp;nbsp;init]&amp;nbsp;))&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;CGSize&amp;nbsp;winSize&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;[[CCDirector&amp;nbsp;sharedDirector]&amp;nbsp;winSize];&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;CCSprite&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;player&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;[CCSprite&amp;nbsp;spriteWithFile:&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;@"&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;Player.png&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rect:CGRectMake(&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;0&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;0&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;27&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;40&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;) ];&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;player.position&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;ccp(player.contentSize.width&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;/&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;2&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;,&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;winSize.height&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;/&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;2&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;);&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;[self&amp;nbsp;addChild:player];&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;return&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;self;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;}&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
     &lt;/tbody&gt;&#xD;
&lt;/table&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;fieldset&gt;&lt;legend&gt;&lt;strong&gt;转换要点&lt;/strong&gt;&lt;/legend&gt;&#xD;
&lt;p&gt;1. 虽然VC++中有super关键字，但linux下用gcc编译时可不认。所以C++中不能用super::init()，而必须老老实实地指定是执行父类CCLayer::init()方法&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;2. 由于cpp里没有property的概念，所以在objc里涉及property的地方，我们都用了get/set函数代替。于是，访问CCDirector.SharedDirector属性的代码，就变成了CCDirector::getSharedDirector()函数调用，shared开头小写的s，也变成了大写的S。同样规则，取得winSize属性的地方，则变成了getWinSize()函数调用。这段代码中还有player-&amp;gt;getContentSize()也受此影响。但访问结构体中的变量，如winSize中的width和height则不需用getter封装。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;3. 设置类的属性，如player.position = ，也改用setter实现，变成player-&amp;gt;setPosition(...)&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;4. C++函数调用不需像OBJC那样在每个参数前面说明这参数是干什么用的，比如rect:CGRectMake(...)，只需直接输入参数即可。另一方面， cocos2d-x仿照iOS实现了CGGeometry的一些函数，你可以在cocos2dx\include\CGGeometry.h里看到它们。除了CGRectMake，还有CGPointMake, CGSizeMake, CGPointZero, CGSizeZero, CGRectZero.&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;5. cocos2d-x所有的游戏元素, sprite,layer,scene,label,action等，都是new在heap上，并且用指针传递的，因此调用其成员函数一定是用-&amp;gt;号，而不像objc里的点号&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;6. cpp里用this替代了objc的self关键字&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;7. cocos2d-x里的init函数改成返回bool类型了。由于cpp里没有objc的"id"关键字，所以cocos2d-iphone里返回id的地方，都改成返回明确的类指针，或者bool型变量&lt;/p&gt;&#xD;
&lt;/fieldset&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;好了，我们编译运行一下，可以看到带头大哥一袭黑衣，很猥琐地躲在黑色背景上，只露出一双杀红了的眼睛。为了游戏性，我们需要把背景颜色改成白的。只要简单地修改，使HelloWorld不是继承CCLayer,而是继承CCColorLayer就行了。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;在HelloWorldScene.h中，修改HelloWorld类声明如下。&lt;/p&gt;&#xD;
&lt;p&gt;（左边为cpp代码，也就是读者现在应该使用的，右边为Cocos2dSimpleGame原来使用cocos2d-iphone的objc代码，用以对比参考。本系列后面的行文也都如此）&lt;/p&gt;&#xD;
&lt;table width="100%"&gt;&#xD;
     &lt;tbody&gt;&#xD;
         &lt;tr&gt;&#xD;
             &lt;td width="50%"&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;cpp with cocos2d-x&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;HelloWorld&amp;nbsp;:&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;cocos2d::CCColorLayer&lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
             &lt;td width="50%"&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;objc with cocos2d-iphone&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;@interface&amp;nbsp;HelloWorld&amp;nbsp;:&amp;nbsp;CCColorLayer&lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
     &lt;/tbody&gt;&#xD;
&lt;/table&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;然后在HelloWorld::init()函数实现中，修改刚开始的&amp;nbsp;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
&lt;br/ /&gt;&#xD;
Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
&lt;br/ /&gt;&#xD;
--&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;!&lt;/span&gt;&lt;span style="color: #000000;"&gt;CCLayer::init()&amp;nbsp;)&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;&#xD;
{&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;false&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;&#xD;
}&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;变成&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
&lt;br/ /&gt;&#xD;
Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
&lt;br/ /&gt;&#xD;
--&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;!&lt;/span&gt;&lt;span style="color: #000000;"&gt;CCColorLayer::initWithColor(&amp;nbsp;ccc4(&lt;/span&gt;&lt;span style="color: #800080;"&gt;255&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #800080;"&gt;255&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #800080;"&gt;255&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #800080;"&gt;255&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&amp;nbsp;)&amp;nbsp;)&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;&#xD;
{&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;false&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;&#xD;
}&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;这里小改了一下逻辑，原版objc里是如果super init成功，就BALA-BALA做后面的工作；我喜欢防御性编程，如果失败则先做出错处理、跳出，然后才继续写正确流程。这么做有两个好处，一是不会写到后面漏掉了错误处理，二是不用做太多层的if嵌套。这个是题外话了。抛开if的逻辑，我们来对比一下这句super init在cpp和objc的区别&lt;/p&gt;&#xD;
&lt;table width="100%"&gt;&#xD;
     &lt;tbody&gt;&#xD;
         &lt;tr&gt;&#xD;
             &lt;td width="50%"&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;cpp&amp;nbsp;with&amp;nbsp;cocos2d-x&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(&amp;nbsp;CCColorLayer::initWithColor(&amp;nbsp;ccc4(&lt;/span&gt;&lt;span style="color: #800080;"&gt;255&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #800080;"&gt;255&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #800080;"&gt;255&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #800080;"&gt;255&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&amp;nbsp;)&lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
             &lt;td width="50%"&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;objc&amp;nbsp;with&amp;nbsp;cocos2d-iphone&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(&amp;nbsp;self&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;[super&amp;nbsp;initWithColor:ccc4(&lt;/span&gt;&lt;span style="color: #800080;"&gt;255&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #800080;"&gt;255&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #800080;"&gt;255&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #800080;"&gt;255&lt;/span&gt;&lt;span style="color: #000000;"&gt;)]&amp;nbsp;)&lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
     &lt;/tbody&gt;&#xD;
&lt;/table&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;fieldset&gt;&lt;legend&gt;&lt;strong&gt;转换要点&lt;/strong&gt;&lt;/legend&gt;&#xD;
&lt;p&gt;1. 首先，cpp的继承默认为private继承，所以类声明的继承处public关键字不可少&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;2. cocos2d-iphone的作者Ricardo Quesada建议我们采用C++的命名空间把cocos2d整个库包起来。而我们在这里既不想直接到头文件里using namespace cocos2d;感染了所有包含这个头文件的CPP文件，也不想把class HelloWorld归到cocos2d命名空间内，所以HelloWorldScene.h头文件里只好在每个cocos2d类前面加上命名空间cocos2d::&lt;/p&gt;&#xD;
&lt;/fieldset&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;编译后运行，你就可以看到带头大哥孤独地站在白色背景上了，寂寞得泪流满面&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/walzer/ScenePlayer.PNG" alt="" width="750" height="397" /&gt;&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 18pt;"&gt;&lt;strong&gt;四、移动目标&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;有了带头大哥后，我们就需要添加一些虾兵蟹将让大哥砍。英雄人物一般不喜欢砍木桩，所以我们就用void addTarget()方法在屏幕右边创建一些跑龙套的小兵，让他们以随机速度向左移动。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;先到HelloWorldScene.h里添加函数声明 void addTarget(); 然后回到HelloWorldScene.cpp里实现函数&lt;/p&gt;&#xD;
&lt;table width="100%"&gt;&#xD;
     &lt;tbody&gt;&#xD;
         &lt;tr&gt;&#xD;
             &lt;td width="50%"&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;&amp;nbsp;cpp&amp;nbsp;with&amp;nbsp;cocos2d-x&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;void&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;HelloWorld::addTarget()&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;{&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;CCSprite&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;target&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;CCSprite::spriteWithFile(&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;"&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;Target.png&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;,&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CGRectMake(&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;0&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;,&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;0&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;,&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;27&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;,&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;40&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;) );&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;&amp;nbsp;Determine&amp;nbsp;where&amp;nbsp;to&amp;nbsp;spawn&amp;nbsp;the&amp;nbsp;target&amp;nbsp;along&amp;nbsp;the&amp;nbsp;Y&amp;nbsp;axis&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;CGSize&amp;nbsp;winSize&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;CCDirector::getSharedDirector()&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;getWinSize();&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;int&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;minY&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;target&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;getContentSize().height&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;/&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;2&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;int&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;maxY&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;winSize.height&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;target&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;getContentSize().height&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;/&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;2&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;int&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;rangeY&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;maxY&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;minY;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;srand(&amp;nbsp;TimGetTicks()&amp;nbsp;);&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;int&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;actualY&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;(&amp;nbsp;rand()&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;%&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;rangeY&amp;nbsp;)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;+&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;minY;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;&amp;nbsp;Create&amp;nbsp;the&amp;nbsp;target&amp;nbsp;slightly&amp;nbsp;off-screen&amp;nbsp;along&amp;nbsp;the&amp;nbsp;right&amp;nbsp;edge,&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;&amp;nbsp;and&amp;nbsp;along&amp;nbsp;a&amp;nbsp;random&amp;nbsp;position&amp;nbsp;along&amp;nbsp;the&amp;nbsp;Y&amp;nbsp;axis&amp;nbsp;as&amp;nbsp;calculated&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;target&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;setPosition(&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;ccp(winSize.width&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;+&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;(target&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;getContentSize().width&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;/&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;2&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;),&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;actualY)&amp;nbsp;);&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;this&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;addChild(target);&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;&amp;nbsp;Determine&amp;nbsp;speed&amp;nbsp;of&amp;nbsp;the&amp;nbsp;target&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;int&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;minDuration&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;int&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;)&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;2.0&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;int&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;maxDuration&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;int&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;)&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;4.0&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;int&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;rangeDuration&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;maxDuration&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;minDuration;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;srand(&amp;nbsp;TimGetTicks()&amp;nbsp;);&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;int&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;actualDuration&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;(&amp;nbsp;rand()&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;%&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;rangeDuration&amp;nbsp;)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;+&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;minDuration;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;&amp;nbsp;Create&amp;nbsp;the&amp;nbsp;actions&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;CCFiniteTimeAction&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;actionMove&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;CCMoveTo::actionWithDuration(&amp;nbsp;(ccTime)actualDuration,&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ccp(&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;target&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;getContentSize().width&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;/&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;2&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;,&amp;nbsp;actualY)&amp;nbsp;);&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;CCFiniteTimeAction&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;actionMoveDone&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;CCCallFuncN::actionWithTarget(&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;this&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;,&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;callfuncN_selector(HelloWorld::spriteMoveFinished));&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;target&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;runAction(&amp;nbsp;CCSequence::actions(actionMove,&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; actionMoveDone,&amp;nbsp;NULL)&amp;nbsp;);&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;}&lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
             &lt;td width="50%"&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;&amp;nbsp;objc&amp;nbsp;with&amp;nbsp;cocos2d-iphone&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;(&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;void&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;)addTarget&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;{&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;CCSprite&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;*&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;target&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;[CCSprite&amp;nbsp;spriteWithFile:&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;@"&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;Target.png&lt;/span&gt;&lt;span style="color: #800000; font-size: 8pt; "&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rect:CGRectMake(&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;0&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;0&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;27&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;40&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;)];&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;&amp;nbsp;Determine&amp;nbsp;where&amp;nbsp;to&amp;nbsp;spawn&amp;nbsp;the&amp;nbsp;target&amp;nbsp;along&amp;nbsp;the&amp;nbsp;Y&amp;nbsp;axis&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;CGSize&amp;nbsp;winSize&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;[[CCDirector&amp;nbsp;sharedDirector]&amp;nbsp;winSize];&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;int&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;minY&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;target.contentSize.height&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;/&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;2&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;int&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;maxY&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;winSize.height&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;target.contentSize.height&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;/&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;2&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;int&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;rangeY&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;maxY&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;minY;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;int&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;actualY&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;(arc4random()&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;%&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;rangeY)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;+&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;minY;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;&amp;nbsp;Create&amp;nbsp;the&amp;nbsp;target&amp;nbsp;slightly&amp;nbsp;off-screen&amp;nbsp;along&amp;nbsp;the&amp;nbsp;right&amp;nbsp;edge,&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;&amp;nbsp;and&amp;nbsp;along&amp;nbsp;a&amp;nbsp;random&amp;nbsp;position&amp;nbsp;along&amp;nbsp;the&amp;nbsp;Y&amp;nbsp;axis&amp;nbsp;as&amp;nbsp;calculated&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;target.position&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;ccp(winSize.width&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;+&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;(target.contentSize.width&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;/&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;2&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;),&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;actualY);&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;[self&amp;nbsp;addChild:target];&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;&amp;nbsp;Determine&amp;nbsp;speed&amp;nbsp;of&amp;nbsp;the&amp;nbsp;target&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;int&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;minDuration&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;2.0&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;int&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;maxDuration&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;4.0&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;int&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;rangeDuration&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;maxDuration&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;minDuration;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;int&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;actualDuration&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;(arc4random()&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;%&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;rangeDuration)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;+&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;minDuration;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;&amp;nbsp;Create&amp;nbsp;the&amp;nbsp;actions&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;id&amp;nbsp;actionMove&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;[CCMoveTo&amp;nbsp;actionWithDuration:actualDuration&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;position:ccp(&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;target.contentSize.width&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;/&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;2&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;,&amp;nbsp;actualY)];&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;id&amp;nbsp;actionMoveDone&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;[CCCallFuncN&amp;nbsp;actionWithTarget:self&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;selector:@selector(spriteMoveFinished:)];&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp;[target&amp;nbsp;runAction:[CCSequence&amp;nbsp;actions:actionMove,&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;actionMoveDone,&amp;nbsp;nil]];&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;}&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
     &lt;/tbody&gt;&#xD;
&lt;/table&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;这里用callfuncN_selector(HelloWorld::spriteMoveFinished)回调了spriteMoveFinished方法，我们需要实现之。同样别忘记在头文件里加入声明, 然后实现之&lt;/p&gt;&#xD;
&lt;table width="100%"&gt;&#xD;
     &lt;tbody&gt;&#xD;
         &lt;tr&gt;&#xD;
             &lt;td width="50%"&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;cpp&amp;nbsp;with&amp;nbsp;cocos2d-x&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;HelloWorld::spriteMoveFinished(CCNode&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;sender)&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;{&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;CCSprite&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;sprite&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(CCSprite&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)sender;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;removeChild(sprite,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;true&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;}&lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
             &lt;td width="50%"&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;objc&amp;nbsp;with&amp;nbsp;cocos2d-iphone&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;)spriteMoveFinished:(id)sender&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;{&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;CCSprite&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;sprite&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(CCSprite&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)sender;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;[self&amp;nbsp;removeChild:sprite&amp;nbsp;cleanup:YES];&amp;nbsp;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;}&amp;nbsp;&lt;/span&gt;&lt;font  color="#008080"&gt;&lt;br /&gt;&#xD;
             &lt;/font&gt;&lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
     &lt;/tbody&gt;&#xD;
&lt;/table&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;fieldset&gt;&lt;legend&gt;&lt;strong&gt;转换要点&lt;/strong&gt;&lt;/legend&gt;&#xD;
&lt;p&gt;1. 随机函数。在iphone上可以用arc4random()直接生成随机函数，而uphone上还是用传统的方法，先获取毫秒级时间（这个函数在uphone上是TimGetTickes()），用srand(int)塞进去作为random seed，然后再调用rand()生成随机数。其中srand和rand是C标准库函数&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;2. objc中的YES和NO，在cpp中变成true和false,这个容易理解&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;3. 回调函数.在objc中用 selector:@selector(spriteMoveFinished)，在cpp中实现就比较复杂了，具体可以看cocos2dx\include\selector_protocol.h里面的声明。总之每种可能出现selector的地方，都有唯一的函数指针类型与之匹配。一共有5种回调函数类型&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
     &lt;li&gt;schedule_selector&lt;/li&gt;&#xD;
     &lt;li&gt;callfunc_selector&lt;/li&gt;&#xD;
     &lt;li&gt;callfuncN_selector&lt;/li&gt;&#xD;
     &lt;li&gt;callfuncND_selector&lt;/li&gt;&#xD;
     &lt;li&gt;menu_selector&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;p&gt;具体使用时，可以看所用函数的变量类型定义来决定。比如使用CCTimer::initWithTarget方法，第二个参数是SEL_SCHEDULE类型，到selector_protocol.h里查一下，可以看到对应是schedule_selector(_SELECTOR)宏，所以调用时就需要在类里头实现一个void MyClass::MyCallbackFuncName(ccTime)函数，然后把schedule_selector(MyClass::MyCallbackFuncName)作为CCTimer::initWithTarget的第二个参数传入。&lt;/p&gt;&#xD;
&lt;/fieldset&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;有了addTarget后，我们需要定时地调用它。所以在init函数返回前增加这个函数调用&lt;/p&gt;&#xD;
&lt;table width="100%"&gt;&#xD;
     &lt;tbody&gt;&#xD;
         &lt;tr&gt;&#xD;
             &lt;td width="50%"&gt;&lt;span style="font-size: 8pt; "&gt;&#xD;
             &lt;/span&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;&amp;nbsp;cpp&amp;nbsp;with&amp;nbsp;cocos2d-x&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;&amp;nbsp;Call&amp;nbsp;game&amp;nbsp;logic&amp;nbsp;about&amp;nbsp;every&amp;nbsp;second&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;this&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;schedule(&amp;nbsp;schedule_selector(HelloWorld::gameLogic),&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;1.0&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;);&lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
             &lt;td width="50%"&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;&amp;nbsp;objc&amp;nbsp;with&amp;nbsp;cocos2d-iphone&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;&amp;nbsp;Call&amp;nbsp;game&amp;nbsp;logic&amp;nbsp;about&amp;nbsp;every&amp;nbsp;second&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;[self&amp;nbsp;schedule:@selector(gameLogic:)&amp;nbsp;interval:&lt;/span&gt;&lt;span style="color: #800080; font-size: 8pt; "&gt;1.0&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;];&lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
     &lt;/tbody&gt;&#xD;
&lt;/table&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;然后实现gameLogic这个回调函数&lt;/p&gt;&#xD;
&lt;table width="100%"&gt;&#xD;
     &lt;tbody&gt;&#xD;
         &lt;tr&gt;&#xD;
             &lt;td width="50%"&gt;&lt;span style="font-size: 8pt; "&gt;&#xD;
             &lt;/span&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;&amp;nbsp;cpp&amp;nbsp;with&amp;nbsp;cocos2d-x&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;void&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;HelloWorld::gameLogic(ccTime&amp;nbsp;dt)&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;{&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;this&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;addTarget();&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;}&lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
             &lt;td width="50%"&gt;&#xD;
             &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
             &lt;div&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; font-size: 8pt; "&gt;&amp;nbsp;objc&amp;nbsp;with&amp;nbsp;cocos2d-iphone&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;-&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;(&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 8pt; "&gt;void&lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;)gameLogic:(ccTime)dt&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;{&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;[self&amp;nbsp;addTarget];&lt;br /&gt;&#xD;
             &lt;/span&gt;&lt;span style="color: #000000; font-size: 8pt; "&gt;}&lt;/span&gt;&lt;font  color="#008080"&gt;&lt;br /&gt;&#xD;
             &lt;/font&gt;&lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;/div&gt;&#xD;
             &lt;/div&gt;&#xD;
             &lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
     &lt;/tbody&gt;&#xD;
&lt;/table&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;不要忘记在头文件里增加函数声明，并且应为public函数，否则回调是调用不到的。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;编译运行，现在你应该看到小喽啰们张牙舞爪地向大哥扑过来。于是拯救世界、维护人类和平的重任就交给大哥了。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/walzer/SceneTargets.PNG" alt="" width="750" height="397" /&gt;&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;fieldset&gt;&lt;legend&gt;系列教程&lt;/legend&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/walzer/archive/2010/10/10/1847089.html"&gt;如何用cocos2d-x来开发简单的Uphone游戏：(一) 下载安装和HelloWorld&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/walzer/archive/2010/10/10/1847100.html"&gt;如何用cocos2d-x来开发简单的Uphone游戏：(二) 移动的精灵&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/walzer/archive/2010/10/11/1848106.html"&gt;如何用cocos2d-x来开发简单的Uphone游戏：(三) 射击子弹 &amp;amp; 碰撞检测&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/walzer/archive/2010/10/12/1849063.html"&gt;如何用cocos2d-x来开发简单的Uphone游戏：(四) 音乐音效 &amp;amp; 最后的润色&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/walzer/archive/2010/10/22/1858155.html"&gt;如何用cocos2d-x来开发简单的Uphone游戏：(五) 打包发布&lt;a&gt;&lt;/p&gt;&#xD;
&lt;/fieldset&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span  style="font-family: Verdana,'Lucida Grande',Arial,Helvetica,sans-serif; line-height: 18px; font-size: 12px;"&gt;&lt;strong&gt;著作权声明：本文由&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;&lt;a href="http://www.walzer.cn/" style="color: #1d58d1; text-decoration: none;"&gt;http://www.walzer.cn/&lt;/a&gt;原创，欢迎转载分享。请尊重作者劳动，转载时保留该声明和作者博客链接，谢谢！&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;img src="http://www.cnblogs.com/walzer/aggbug/1847100.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/walzer/archive/2010/10/10/1847100.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/walzer/archive/2010/10/10/1847089.html</id><title type="text">如何用cocos2d-x来开发简单的Uphone游戏：(一) 下载安装和HelloWorld</title><summary type="text">cocos2d-x.org开源社区把iPhone上知名的cocos2d游戏引擎翻译成C++语言，并在国产的Uphone平台上运行。本系列教程在Ray Wenderlic的 How To Make A Simple iPhone Game with Cocos2D 基础上，从头到尾解释了如何把Wenderlic的Cocos2DSimpleGame从objective c翻译成C++语言，从cocos2d-iphone移植到cocos2d-x并在uphone上运行，及过程中的细节注意点。</summary><published>2010-10-10T03:10:00Z</published><updated>2010-10-10T03:10:00Z</updated><author><name>Walzer</name><uri>http://www.cnblogs.com/walzer/</uri></author><link rel="alternate" href="http://www.cnblogs.com/walzer/archive/2010/10/10/1847089.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/walzer/archive/2010/10/10/1847089.html"/><content type="html">&lt;div&gt;WARNING: 此文已经过时，引擎升级到更高的版本，方法也有些变化。请移步到&amp;nbsp;&lt;a href="http://www.cocos2d-x.org/projects/cocos2d-x/wiki/Tutorials"&gt;http://www.cocos2d-x.org/projects/cocos2d-x/wiki/Tutorials&lt;/a&gt;&amp;nbsp;阅读最新的Cocos2dxSimpleGame系列教程（网站上的tutorial教程会保持与cocos2d-x最新版本同步，但仅提供英文版本）。&lt;/div&gt;&lt;p&gt;另，uphone这名字由于更早时候被 UT斯达康 注册过了，所以联通改项目名叫沃phone。我比较懒，这几篇博客就维持原状不修改了。cocos2d-x.org网站上攒了不少好东西，尤其是ios和android上的，大家自己去挖。&lt;/p&gt;&lt;p&gt;-----------------&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;对于cocos2d新手而言，应该对Ray Wenderlic的 &lt;a href="http://www.raywenderlich.com/352/how-to-make-a-simple-iphone-game-with-cocos2d-tutorial"&gt;How To Make A Simple iPhone Game with Cocos2D Tutorial&lt;/a&gt;&amp;nbsp;一文不会感到陌生，此文在cocos2d-iphone官网上被推荐，而且被翻译成中文发在CocoaChina论坛上 http://www.cocoachina.com/bbs/read.php?tid-15554.html&lt;/p&gt;&#xD;
&lt;div&gt;&lt;br /&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;现在&lt;a href="http://www.cocos2d-x.org/"&gt;cocos2d-x.org&lt;/a&gt;把cocos2d-iphone翻译成C++语言，以适配在更多的手机操作系统上。目前已经出了两个稳定版本0.7.0和0.7.1，&#x1D;首先支持了国产的UPhone平台。除了cocos2d-uphone，还实现了cocos2d-win32, cocos2d-iphone-cpp, cocos2d-android-ndk以及网友贡献的cocos2d-bada。&lt;/div&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;现在让我们来看看，怎么在UPhone上用cocos2d-x移植Ray Wnderlic的忍者扔飞镖游戏Cocos2dSimpleGame&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong style="font-size: 18pt;"&gt;一、下载并安装cocos2d-x&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Uphone的推荐开发环境是Windows系统。假设您已经安装好了Uphone SDK和开发环境 (UPhone SDK下载地址&lt;a  href="http://sinaapp.csdn.net/up.zip"&gt;http://sinaapp.csdn.net/up.zip&lt;/a&gt;，开发者社区地址&lt;a  href="http://110.86.4.110:8086/developmentWorks/"&gt;http://110.86.4.110:8086/developmentWorks/&lt;/a&gt;） &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 14pt;"&gt;&lt;strong&gt;1. 下载cocos2d-x源码&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;&lt;/span&gt;&lt;br style="font-size: 14pt;" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;方法一： 到 &lt;a href="http://download.cocos2d-x.org/"&gt;http://download.cocos2d-x.org&lt;/a&gt; 下载稳定发布版的压缩包。&lt;br /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;方法二： 推荐下载最新的代码。请从 &lt;a href="http://github.com/cocos2d/cocos2d-x/"&gt;http://github.com/cocos2d/cocos2d-x/&lt;/a&gt; 里获取最新的代码，如果不会用git工具，则在这个网页右边找到DOWNLOAD，点击下载就行了。&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;解压后把目录放到Uphone SDK所在的 D:\Work7\cocos2d-x\ 目录下，注意保持目录结构如图，省去一些配置PATH的麻烦&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/walzer/cocos2dx-dir.PNG" alt="" height="428" width="640" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;可以看到，cocos2d-x已经完整地把cocos2d引擎、所有测试例、box2d和chipmunk两个物理引擎、CocosDenshion音效引擎都移植过来了。双击cocos2d-uphone.sln，用Visual Studio2008或VS2010打开工程。（别点错了打开cocos2d-win32.sln）&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong style="font-size: 14pt;"&gt;2. 安装vs2008的模板&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;进到D:/Work7/cocos2d-x/template/CCXAppWiz.vs, 然后双击setup_vs2008.js运行，成功安装后会有提示框显示"App Wizard successfully installed!"。然后你在vs2008里solution -&amp;gt; Add -&amp;gt; New Project 就可以选择建立cocos2d-uphone或cocos2d-win32程序了&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong style="font-size: 18pt;"&gt;二、Hello, Cocos2D&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;在开始动手之前，咱们先看下cocosTemplate编译和运行的效果。这里有一点需要注意，uphone模拟器并不是像windows mobile那样的armulator解决方案，而是靠win32-linux交叉编译来解决模拟器-真机开发环境差异的。所以在Visual Studio里的solution platform下拉菜单里，并没有单独的一个&amp;#8220;uphone"选项，而是直接在win32-debug下编译运行uphone应用。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;在VS2008对cocosTemplate编译完后，需要设置一下启动参数。在cocosTemplate项目上点右键-&amp;gt;属性(Properties), 在Debugging标签下，修改Command和Command Arguments如下&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/walzer/property-debugging.PNG" alt="" height="580" width="749" /&gt;&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;在屏幕右下角找到uphone助手的小图标，右击弹出菜单，然后点启动。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/walzer/emulator-start.PNG" alt="" height="203" width="287" /&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;模拟器启动起来后，运行cocosTemplate&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/walzer/HelloWorld.PNG" alt="" height="750" width="397" /&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;现在我们可以做活动一下颈椎，脑袋靠到右肩膀上看模拟器，All is well~ &amp;nbsp;这是个横屏的应用，屏幕坐标的确是横过来了，但模拟器本身却没有被放倒横过来。Uphone开发团队应该还需要一些时间来把模拟器这个小萝莉推倒。我在本文的后面部分，为了省去各位读者卷屏和活动颈椎的工作，就把截图都放横过来了贴了。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;这里有两个细节：&lt;/p&gt;&#xD;
&lt;p&gt;一是模拟器点&amp;#8220;启动&amp;#8221;时，会给我们一个干净的环境运行自己的程序；而点&amp;#8220;自动模式启动&amp;#8221;时，则会加载桌面进程，连带解锁、壁纸、微件、应用程序ICON列表全部出来了。对于调试游戏而言，我们不需要加载这么多东西。&lt;/p&gt;&#xD;
&lt;p&gt;二是cocos2d-x的HelloWorld相比iphone版本，增加了右下角的一个"X"退出按钮。因为并不是每款手机的HOME键都像iphone一样可以退出当前应用进程，所以我们保守起见，在游戏里自己留了个退出的按钮。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;fieldset&gt;&lt;legend&gt;系列教程&lt;/legend&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/walzer/archive/2010/10/10/1847089.html"&gt;如何用cocos2d-x来开发简单的Uphone游戏：(一) 下载安装和HelloWorld&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/walzer/archive/2010/10/10/1847100.html"&gt;如何用cocos2d-x来开发简单的Uphone游戏：(二) 移动的精灵&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/walzer/archive/2010/10/11/1848106.html"&gt;如何用cocos2d-x来开发简单的Uphone游戏：(三) 射击子弹 &amp;amp; 碰撞检测&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/walzer/archive/2010/10/12/1849063.html"&gt;如何用cocos2d-x来开发简单的Uphone游戏：(四) 音乐音效 &amp;amp; 最后的润色&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/walzer/archive/2010/10/22/1858155.html"&gt;如何用cocos2d-x来开发简单的Uphone游戏：(五) 打包发布&lt;/a&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;/fieldset&gt;&#xD;
&lt;p&gt;&lt;a&gt;&lt;br /&gt;&#xD;
&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span  style="font-family: Verdana, 'Lucida Grande', Arial, Helvetica, sans-serif; line-height: 18px; font-size: 12px; "&gt;&lt;a&gt;&lt;strong&gt;著作权声明：本文由&lt;/strong&gt;&lt;/a&gt;&lt;/span&gt;&lt;a&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;&lt;a href="http://www.walzer.cn/" style="color: #1d58d1; text-decoration: none;"&gt;http://www.walzer.cn/&lt;/a&gt;原创，欢迎转载分享。请尊重作者劳动，转载时保留该声明和作者博客链接，谢谢！&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/walzer/aggbug/1847089.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/walzer/archive/2010/10/10/1847089.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
