tolua.cast(object,”CCSprite”)
第一个参数是需要强转的对象 , 第二个参数是强转的目标类型
=================================================================
CCDisplayManager
CCDecorativeDisplay
CCColliderDetector
=================================================================
virtual void update(float time);
其实update的代码很简单,就是遍历m_pTargets数组(或者链表,hash,随你高兴,不过他实际是hash),然后逐个更新每个tHashElement 里面的动作,当然他会有一些判断,比如动作是否暂停,是否结束之类的,并做相应处理,不如终止了自然要remove掉。如果一切正常,那就调用动作的step方法(这里必须知道多态的概念哦,因为step和后面的update方法都是virtual的)。
还可以参考,红孩儿action 三板斧中。。。
virtual void draw(void);//绘制自己
draw()调用openGL的函数来完成绘制功能——把一个纹理映射到一个矩形上
如果要自定义绘制一些图像,可以重写draw()函数,不过不要忘记调用父类的draw()函数
=================================================================
CC_SYNTHESIZE_PASS_BY_REF
CC_SYNTHESIZE
常见宏:
1)NS_CC_BEGIN cocos2d命名空间开始
2) NS_CC_END cocos2d命名空间结束
3)USING_NS_CC 声明cocos2d命名空间
4)CC_SYNTHESIZE_READONLY(varType, varName, funName)声明一个成员变量以及getfunName函数,没有set函数。getfunName已经实现,其实现就是返回这个值。
5)CC_SYNTHESIZE_READONLY_PASS_BY_REF(varType, varName, funName) 类似CC_SYNTHESIZE_READONLY,不过getfunName返回的是引用。
6)CC_SYNTHESIZE(varType, varName, funName) 声明一个成员变量以及getfunName,setfunName函数.函数声明和实现都有
7)CC_SYNTHESIZE_PASS_BY_REF(varType, varName, funName) 类似CC_SYNTHESIZE,不过getfunName返回的是引用。
8)CC_PROPERTY_READONLY(varType, varName, funName) 声明一个成员变量以及getfunName函数,没有set函数。getfunName函数的实现要自己做
9)CC_PROPERTY_READONLY_PASS_BY_REF(varType, varName, funName) 类似CC_PROPERTY_READONLY,不过getfunName返回的是引用。getfunName函数的实现要自己做
10)CC_PROPERTY(varType, varName, funName) 声明一个成员变量以及getfunName,setfunName函数.函数实现要自己做
11)CC_PROPERTY_PASS_BY_REF(varType, varName, funName) 类似CC_PROPERTY,,不过getfunName返回的是引用
=================================================================
b2Filter:
groupIndex
categoryBits
maskBits
=================================================================
this->getAnimation()->setMovementEventCallFunc(NULL,NULL);
处理 动画 完成事件
每一个动画开始和结束都会事件。我们需要做的就是监听这个事件并为其写好响应函数。
this->getAnimation()->setFrameEventCallFunc(NULL,NULL);
设置帧事件回调函数。
setFrameEventCallFunc需要在动画编辑器里设置帧事件才有响应。
=================================================================
CCPhysicsWorld
void update(float delta);
{m_world->Step(delta,8,10); ...} step方法来刷新整个世界
CCParallaxNode
==============================================================
手游 更新对象状态 实现 动画更新
---------------------------------------------------------------------
2、collectgarbage (opt [, arg])
功能:是垃圾收集器的通用接口,用于操作垃圾收集器
opt:操作方法标志
"Stop": 停止垃圾收集器
"Restart": 重启垃圾收集器
"Collect": 执行一次全垃圾收集循环
"Count": 返回当前Lua中使用的内存量(以KB为单位)
"Step": 单步执行一个垃圾收集. 步长 "Size" 由参数arg指定 (大型的值需要多步才能完成),如果要准确
指定步长,需要多次,实验以达最优效果。如果步长完成一次收集循环,将返回True
"Setpause": 设置 arg/100 的值作为暂定收集的时长
"Setstepmul": 设置 arg/100 的值,作为步长的增幅(即新步长=旧步长*arg/100)
---------------------------------------------------------------------
CC_SYNTHESIZE(bool, m_didJumpAttack, DidJumpAttack); 一般 getX,setX,m_X
CC_SYNTHESIZE_RETAIN(CCAction*, m_idleAction, IdleAction);
指针 get,set,m_ ....
---------------------------------------------------------------------
在每次更新引擎时,物体可能会产生碰撞。Box2D提供了多个碰撞事件,用于提供给开发者处理物体的碰撞。碰撞事件通过代理类b2ContractListener通知,为了监听碰撞事件,我们需要继承并实现以下4个事件回调函数:
virtual void BeginContact(b2Contact* contact); //碰撞开始
virtual void EndContact(b2Contact* contact); //碰撞结束
virtual void PreSolve(b2Contact* contact, const b2Manifold* oldManifold); //碰撞处理前
virtual void PostSolve(b2Contact* contact, const b2ContactImpulse* impulse); //碰撞处理后
Box2D对碰撞的处理分为两个步骤,具体如下所示。
(1) 碰撞检测:发现物体间重叠。BeginContact和EndContact事件会在两个物体开始和结束重叠时通知。
(2) 碰撞处理:根据物理定律处理速度改变和位置变化等效果,PreSolve和PostSolve正是对应碰撞处理的前后时间点。
这里有一个需要注意的地方:我们不能直接在BeginContact和EndContact中改变物理引擎的状态,这是因为这两个事件的调用都是在Box2D的b2World::Step方法中,此时正在进行物理世界的演算,是不允许从外部对物理世界中的物体状态进行改变的。例如,我们不能在碰撞事件中直接删除被捕捉鱼的Box2D对象,只能用一个容器把需要处理的事件保存起来,待Step方法执行完毕后再异步处理这些碰撞。
---------------------------------------------------------------------