cocos2d-x 一些笔记

来源:互联网 发布:js防水涂料厚度规范 编辑:程序博客网 时间:2024/06/18 14:39
tolua.cast
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方法执行完毕后再异步处理这些碰撞。


---------------------------------------------------------------------


0 0
原创粉丝点击