cocos2dx小结

CCCamera表示眼睛看的位置。
如果CCCamera在顶上,就相当于俯视,相机拿远,精灵就缩小
cocos2dx所有的节点都配了一个摄像机CCCamera
ccc4f(g,r,b,o)o为透明度
CCLayerColor//颜色
CCLayerGradient//渐变色图层
坐标系
屏幕坐标系为左上角为原点(触屏点击下的)
opengl坐标系为左下角为原点
物体本身坐标系,物体自身的坐标系


内存管理
   引用计数
   GameObject *pObject1 = new GameObject;
   GameObject *pObject2 = pObject1;
   delete pObject1;
   pObject1->icount = 0;//出问题
   
   retain();增加引用计数
   release();减少计数,为0则删除
   retianCount();返回当前引用计数多少
   在CCobject中m_Rcfcrence//引用计数
   重点:在要执行对象指针的赋值的时候要用retain();
   每次自己的节点要释放的时候都会释放自己的节点里的子节点,addchild()
 
//宏
   CC_SYNTHESIZE(int,_iCount,ICount);
   CC_SYNTHESIZE_RETAIN(CCsprite...);
   CC_SAFE_DELETE(Sprite);
   在PlatformMarocs文件中
//UI系统
   字体
   标签
   菜单
   进度条
   计时器
Cocos2dx缓存机制 //解决内存问题
   1.cocos2dx纹理缓存
      CCSprite->CCTexture2D->CCTextCache
      CCTexture2D单例模式
      CCTextureCache::shareTextureCache()->addImage();
      加载过的图片不会再加载,通过字典树,判断里面的键值对是否存在
   2.cocos2dx精灵帧的缓存
      CCSpriteBatchNode精灵表
//第一种方式直接创建,这样fps会很低大概30多,但是用的图片还是同一张
      for(int i = 0;i < 9000;i++)
{
CCSprite *sprite1 = CCSprite::create("helloworld.png");

sprite1->setPosition(ccp(CCRANDOM_0_1()*480,CCRANDOM_0_1()*320));

addchild(sprite1);

}
//第二种,通过CCBatchNode,同一个渲染方式。大概60多,多一倍,但是只能在同一个层渲染
CCSpriteBatchNode *pbtach = CCSpriteBatchNode::create("helloworld.png");
addchild(pbatch);
for(int i = 0;i < 9000;i++)
{
CCSprite *sprite2 = CCSprite::createWithTexture(pbtach->getTexture());

sprite2->setPosition(ccp(CCRANDOM_0_1()*480,CCRANDOM_0_1()*320));

addchild(sprite1);

}
//第三种:比较好的方法,使用plist文件(plist就是把多张图片拼接成一张图片,通过xml,只是把图片的信息加载进来)
CCSpriteFrameCache *spriteCache = CCSpriteCache::SharedSpriteCahce();
spriteCache->addSpriteFrameWithFile("sprite.plist"); //加载plist文件
CCSpriteBatchNode *pbtach = CCSpriteBatchNode::create("sprite.png");//加载精灵表
for(int i = 0;i < 9;i++)
{
char str[50] = {0};//初始化为0
sprintf(str,"gross%d.png",i+1); //都是用图片的路径,到时候通过plist文件查找到sprite.png里的信息
CCSprite *sprite2 = CCSprite::createWithSpriteFrameName(str); //这里的文件是从sprite.png加载的
sprite2->setPosition(ccp(CCRANDOM_0_1()*480,CCRANDOM_0_1()*320));
addChild(sprite2);
}
   3.cocos2dx动画缓存


   TexturePacker//图片拼接


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值