Imrazor's Blog

Stay Hungry, Stay Foolish

Cocos2d中的box2d

一、准备工作
引入box2d包,在需要使用box2d的文件中加入box2d的头文件;由于box2d是c++编写的,所以要把引入box2d的所有文件后缀名都改为.mm

二、box2d中的一些重要参数
1、gravity,重力加速度,同现实世界中的g,向量
2、shape,形状,形状是有大小的
3、density,密度
4、friction,摩擦力
5、restitution,恢复,此参数用于碰撞,如果两个物体有不同的restitution,box2d总是选择比较大的restitution进行计算
6、meter,距离单位,灵活定义你的meter,当对象为0.1至10meters的时候,box2d可以很好的处理它们,

三、box2d之hello world
让我们先创建一个box2d项目。创建好之后运行,每当我们点击屏幕时,会落下一个小方块:

Alt text

Cocos2d中的动画、字体、菜单和声音

一、Action和Animation。cocos2d提供了格式各样的action和animation

举个例子

1
2
CCAction *moveAction = [CCMoveBy actionWithDuration:2.0f position:ccp(200.0f,0.0f)];
[vikingSprite runAction:moveAction];

假如vikingSprite是我们已经建立好的一个精灵,那么这个精灵就会朝着position的位置移动,两秒后就到指定位置了

一般来讲,精灵的跟动画相关的有CCAction,CCAnimation,CCAnimate三个对象。一般都是先创建CCAnimation对象,通过CCAnimation创建CCAnimate,再通过CCAnimate创建CCAction,最后精灵对象run一下这个action对象,动画就跑起来了

比较常用的几个action有CCRepeatForever,一个无限重复的动作。CCSequence队列执行一个动作,CCSpawn同时执行多个动作,这三个类都是CCAction的子类,多个action可以互相嵌套着用

Cocos2d中比较重要的类

一、CCDirector,导演,单例,主要负责场景切换,控制OpenGL ES中的一些设置(如投影)。 CCDirector有四种类型:
1、CCDirectorTypeNSTimer,如果你的程序中要使用uikit中的对象并且支持ios3.1以前的版本,使用此类型,此类型下可以设置每秒刷新率1~60;
2、CCDirectorTypeMainLoop,比上个导演类型稍快,这个类型下使用uikit相关对象效果不好,并且不能自定义刷新率;
3、CCDirectorTypeThreadMainLoop,跟上个差不多,这个导演有在一个独立线程中有个timer来控制主线程中的main loop;
4、CCDirectorTypeDisplayLink,通过CADisplayLink刷新屏幕,这个类型下可以使用uikit中的对象,在ios3.1以上的版本才能使用这个类型,刷新率可以定为60,30,15每秒

二、CCNode,一个父类,这个父类中包含了对OpenGL ES的操作,对action的展现等等

三、CCScene,场景,CCNode的子类,同一时间CCDirector只能有一个场景,场景持有屏幕上所有的可见对象,是CCLayer的容器

博客搬家了

最近打算把博客搬到这里,主要有两个原因:一方面csdn广告多,样式不能自定义,另一方面看到很多大牛都在这里建博客,于是打算跟一下风,: )

原博客里文章太碎,这次也打算好好整理下,之后陆续整理到这里来,以后也是本着只写精品的原则来。

前段时间刚刚经历过一个多月的封闭开发,每天基本都是早晨9点到晚上12点的节奏。虽然很累,但是收获也不少。其实平时熟悉的节奏很难让自己暴露一些问题,可是在很疲劳并且高度压力之下,某些问题就很有可能出现。