|
<div class=" ostContent">
<p><img height="90" alt="" src="http://www.cocoachina.com/bbs/attachment/6_37_21cfff245d47a38.png" width="160"/></p>
<p><img height="480" alt="" src="http://www.cocoachina.com/bbs/attachment/6_37_6effc83a167c6a5.png" width="320"/></p>
<p>通过<a href="http://www.cocoachina.com/index.php/archives/cocoachina_200.html" target="_blank">上一篇</a>, 我们已有个基本的画图功能, 这次让我们弄一个简单的游戏框架吧!<br/><span id="more-206"></span><br/><br/>其实一般的游戏, 大致有两个主要的函数就可以了: update 和 render! </p>
<p>我们在 update 里更新游戏数据, 然后在render 里把游戏的画面画出来。我们来定议一个叫 CCGameApp 的 class 吧:</p>
<div class="geshi no="no" objc">
<ol>
<li class="li1">
<div class="de1"><span class="kw4">class</span> CCGameApp</div>
<li class="li1">
<div class="de1"><span class="br0">{</span></div>
<li class="li1">
<div class="de1">public<span class="sy0">:</span></div>
<li class="li1">
<div class="de1"> CCGameApp<span class="br0">(</span><span class="br0">)</span>;</div>
<li class="li1">
<div class="de1"> ~CCGameApp<span class="br0">(</span><span class="br0">)</span>;</div>
<li class="li1">
<div class="de1"> </div>
<li class="li1">
<div class="de1"> <span class="kw4">void</span> <span class="kw4">update</span><span class="br0">(</span><span class="kw4">float</span> dt<span class="br0">)</span>;</div>
<li class="li1">
<div class="de1"> <span class="kw4">void</span> <span class="kw4">render</span><span class="br0">(</span><span class="br0">)</span>;</div></li></ol></div>
<p>大家看到我们的 update 函数, 有一个 dt 参数, 在这里我略微解说一下: 游戏的更新率, 最理想是我们把它设成固定的,比如每秒60帧,但有时可能某些原因,游戏没法达到这个更新率,那怎么办呢?总不能让角色忽快忽慢的移动吧!而这个 dt 参数是从上一帧到现在这帧,共用去了多少时间(秒),我们可以利用它调整游戏里的数据,比如说,主角一秒移动1个像素,现在过了dt 这么多秒,那主角应该移动 (1*dt) 个像素了!</p>
<p>这次,我们也把 CCSprite 一分为二,弄多了一个 CCTexture,目的是让不同的 CCSprite 可以共享一个贴图,一般来说,为了节省空间和速度考虑,我们会把数个小图,放在一个大的贴图里,像上面第一个图,里面就有两个角色的图,那我们建立两个不同的sprites时,可以用同一个贴图!</p>
<p>而建立 CCSprite的参数,就是小图在大贴图里的起始位置和大小:</p>
<div class="geshi no="no" objc">
<ol>
<li class="li1">
<div class="de1">CCSprite<span class="br0">(</span>CCTexture <span class="sy0">*</span>texture, <span class="kw4">float</span> x, <span class="kw4">float</span> <span class="kw4">y</span>, <span class="kw4">float</span> <span class="kw4">width</span>, <span class="kw4">float</span> <span class="kw4">height</span><span class="br0">)</span>;</div></li></ol></div>
<p>CCSprite 的 render 也多加了一个角度的参数,我们可以用它把角色转来转去了!</p>
<div class="geshi no="no" objc">
<ol>
<li class="li1">
<div class="de1"><span class="kw4">void</span> <span class="kw4">render</span><span class="br0">(</span><span class="kw4">float</span> x, <span class="kw4">float</span> <span class="kw4">y</span>, <span class="kw4">float</span> angle<span class="sy0">=</span><span class="nu0">0</span>.0f<span class="br0">)</span>;</div></li></ol></div>
<p>因为时间关系不写太多了,大家有兴趣,可以看一下代码作为参考。</p>
<p>本篇文章的代码可以在<a href="http://www.cocoachina.com/bbs/read.php?tid-99.html" target="_blank">这里</a>下载。</p></div> |
|