cocos2d 入门必备4个基本概念
jopen
13年前
<span style="line-height:19px;font-family:sans-serif;font-size:13px;"> <h1><a name="cocos2d_basic_concepts" rel="nofollow">cocos2d Basic Concepts</a> cocos2d 基本概念</h1> <div class="level1"> <p>以下有一些cocos2d的基本概念,是做一个程序所必须掌握的:</p> <ul> <li> <div class="li"> <a href="/misc/goto?guid=4959500817777587305" rel="nofollow" target="_blank">Scenes</a> </div> </li> <li> <div class="li"> <a href="/misc/goto?guid=4959500817861334797" rel="nofollow" target="_blank">Director</a> </div> </li> <li> <div class="li"> <a href="/misc/goto?guid=4959500817952426872" rel="nofollow" target="_blank">Layers</a> </div> </li> <li> <div class="li"> <a href="/misc/goto?guid=4959500818029716792" rel="nofollow" target="_blank">Sprites</a> </div> </li> </ul> </div> <h2><a name="scenes" rel="nofollow">Scenes</a> 场景</h2> <div class="level2"> <p> </p> <p>场景是被一个Scene 对象实现的,或多或少的,是一个独立的程序流的一部分。一些人可把它称作是screens屏幕,或者是stages舞台。你的程序可以有很多场景,但是只有一个可以在给定的时间内的被激活的。</p> <p>例如,你可能有一个游戏,它有如下的场景。<em>Intro</em>, <em>Menu</em>, <em>Level 1</em>, <em>Cutscene 1</em>, <em>Level 2</em>, <em>Winning cutscene</em>, <em>losing cutscene</em>, <em>High scores screen</em></p> <p>你可以定义他们中的任何一个作为独立的应用,下面每一个场景之间通过一条线相连接。</p> <p> </p> <p><img style="cursor:pointer;" alt="cocos2d 入门必备4个基本概念" src="https://simg.open-open.com/show/67f4f5e2dfee424548707952ee4c072a.png" width="720" height="160" /></p> <p> </p> <p> 一个cocos2d由一个或者多个层组成(层是用Layer对象实现的),他们堆在了一起。层给了场景一个展示和表现,最简单的操作就是创建一个有层的场景概念。</p> <p>一些场景类的集合叫做transitions,是通过TransitionScene 对象来实现的,他允许你可以在两个场景之间回滚。例如fade out/in,从一个面滑动的等。</p> <p>因为场景是CocosNode的子类,所以说他们可以通过手动或者使用actions的方式被改变。</p> <p> </p> </div> <h2><a name="director" rel="nofollow">Director</a> 指导者</h2> <div class="level2"> <p> </p> <p>指导者可以是一个组件,他可以知道场 景向前和向后。指导者是一个共享的,单件对象,他知道当前哪一个场景应该是active的,他可以处理栈里面的一系列场景,就像scene calls,暂停一个Scene和,把它存起来,然后其他场景进入,回退到开始。。当一个层需要去push,替换,或者是在当前场景的末尾,这个指导者是 真正能够改变场景的人。指导者同样会对主屏幕的初始化负责。</p> <p> </p> </div> <h2><a name="layers" rel="nofollow">Layers</a> 层</h2> <div class="level2"> <p> </p> <p>Layer有整个屏幕这个大的可画的区域,并且他知道怎么画。它可以部分透明(有一个洞或者整个/全部之中的一般透明),允许看到它下面的其他层。层就是定义展示和表现的,所以你编程的更多时间是花在的层的子类上了。</p> <p> </p> <p><img style="cursor:pointer;" alt="cocos2d 入门必备4个基本概念" src="https://simg.open-open.com/show/79edeecc390e66ea54030175d6e3d80d.png" width="640" height="298" /></p> <p> </p> <p> 你可以在层上定义事件的handlers,事件在层上从头到尾的延伸,直到某个层捕捉到了事件,并且接受了它。</p> <p>虽然很多的程序需要你自己定义自定义的层类,cocos2d提供了一个非常好的预定义层的library。</p> <p>例如简单的menu 层使用Menu,一个color层,用ColorLayer,定义一个多层的Layer,等等。</p> <p>Layer可以包含Sprite对象,Label对象,甚至让其他的Layer对象当作起事件。</p> <p>因为层也是CocosNode的子类,你可以通过手动或者使用Action使其改变。See <a href="/misc/goto?guid=4959500818110208632" rel="nofollow" target="_blank">Actions</a> for more detail about actions.</p> <p> </p> </div> <h2><a name="sprites" rel="nofollow">Sprites</a> 精灵</h2> <div class="level2"> <p> </p> <p>精灵的实现是通过Sprite类,他们可以有很多子精灵,当一个父精灵变化的时候,它的子精灵也将会改变。</p> <p>因为精灵的子类是cocosNode,所以他们可以被手动的或者使用actions来改变。更多的细节就关注Action吧。</p> <p>====</p> <p>这个解释下,以上说的比较抽象,通常 的使用方式是,有一个sprite.png源文件,上面画着很多需要用的元素,也就是精灵,我们可以通过它的坐标和长宽,锁定一个矩形的区域。读取了图片 之后,可以进一步的读取图片里面指定位置的精灵,不如我的(100,100,20,20)这个区域画着一个小鸟,这就可以当做一个精灵来使用,增加弹跳 啊,等等动作了。或者是可以让他随着时间而改变。</p> <p> </p> <p>原文地址:http://www.cnblogs.com/AlexLiu/archive/2010/01/24/1655477.html</p> </div> </span>