zoukankan      html  css  js  c++  java
  • cocos2d-x内存管理(见解)

    cocos2d-x 延续了cocos2d 和OC的引用计数的内存管理机制!

    下面我们来看看CCDriectro类 CCPoolManager::sharedPoolManager()->push();
    基础:我们要先熟悉  release  释放该内存!
     
        CCPoint *temp = new CCPoint(controlPoint.x, controlPoint.y);

        m_pControlPoints->addObject(temp);

        temp->release();

    autorelease 是标记自动释放对象!下面会讲到自动内存释放 是怎么操作的

    CCString* pRet = new CCString(str);

        pRet->autorelease();

        return pRet;

    CCPoolManager::sharedPoolManager()->pop();  看看这两个方法!就相当于OC的内存释放池! 在CCDriectro中 每次去渲染的时候!都会去查看内存释放池的是否有内存计数为0的对象!如果有的话!就会去清理掉!释放内存! 

     其实我们在游戏开发中 注意一些内存的管理,对游戏有很大的帮助!一点一点积攒起来!就会对游戏内存吃紧的问题!有本质的解决!

    1,如场景切换  在内存吃紧的情况下 我们可以选择 先清理一下缓存!

    // 清空缓存 CCDirector::sharedDirector()->purgeCachedData(); 

    2,场景切换也有注意的地方!场景切换 有压入式加入!替换式加入!

    这里说一下压入场景(pushScene)和弹出场景(popScene)。它们都可以用来显示场景 和保留当前场景并显示新场景 ;不同的是它们不把旧场景从内存中释放掉,这样可以提高加 载速度,这时需要注意,如果内存不足以支撑的话,建议采用 replaceScene函数。

    以上过程分为以下三步:

    1)调用 CCDirector::sharedDirector()->purgeCachedData() 清空缓存。
    2)新建场景。
    3)调用 CCDirector::sharedDirector()->replaceScene(this) 替换新场景。Cocos2D-x 提供了场景间切换的特效,下一节将会介绍这些内容。

  • 相关阅读:
    第一个django
    windows安装django
    Uva 705
    UVa 10034
    ACM中出现RuntimeError的原因及可能的解决办法
    [转载]最小生成树-Prim算法和Kruskal算法
    Uva 10305 Ordering Tasks
    Uva 793 Network Connections
    Uva 10608 Friends
    Uva 10583 Ubiquitous Religions
  • 原文地址:https://www.cnblogs.com/damowang/p/4060390.html
Copyright © 2011-2022 走看看