首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >切换CCSpriteBatchNode的最佳方式是什么?

切换CCSpriteBatchNode的最佳方式是什么?
EN

Stack Overflow用户
提问于 2014-04-11 00:50:59
回答 1查看 58关注 0票数 0

我需要从CCSpriteBatch节点切换纹理地图集。我选择的方法是,在可玩角色到达特定的X轴(700)后,游戏会改变它。

它在视觉上运行良好,但问题是,它在更改时冻结屏幕2-3秒,并且我在控制台中收到内存警告。

我不认为我是唯一一个这样做过的人,这让我想知道切换CCSpriteBatchNode的正确(最轻的)方式是什么。

请参见下面的当前切换代码:

代码语言:javascript
复制
if(mainCharacter.x > 700)
{
    //NSLog(@"switch!");

    float oldHeroX, oldHeroY;

    oldHeroX = mainCharacter.x;
    oldHeroY = mainCharacter.y;

    [_myBatchNode removeChild:mainCharacter];
    [[CCSpriteFrameCache sharedSpriteFrameCache] removeSpriteFramesFromFile:texturePList1];
    [self removeChild:_myBatchNode];



    [[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:texturePList2];
    _myBatchNode = [CCSpriteBatchNode batchNodeWithFile:texturePNG2];
    [_myBatchNode.texture setAliasTexParameters];
    [self addChild: _myBatchNode z:-6];

    //this is just a method that starts the playable character sprite and add to batch node and layer
    [self startCharacter:oldHeroX :oldHeroY];
}

谢谢

EN

回答 1

Stack Overflow用户

发布于 2014-04-11 01:52:12

我倾向于远离加载‘在飞行’,大体上:即我预先加载我的所有纹理在开始一个场景(或剪切场景)之前,通常在过渡期间。当被卡住时,我必须在运行中加载(因为预加载纹理的内存占用太高),我将使用pvr纹理(未压缩),牺牲包大小来获得加载速度和加载期间的内存使用。YMMV,取决于你需要‘即时’切换的单个纹理的大小。

另外,如果你所需要的只是一个精灵或者动画,不要使用批处理节点。一无所获,但清理和清盘的成本很高。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22994229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档