Jav*_*ner 1 cocos2d-iphone ccsprite cocos2d-x ccspritebatchnode
我的任务是在帧中绘制一个精灵100次.例如,我需要绘制一个由精灵"sprite.png"组成的行.我是这样做的:
CCSprite *spriteArr[ 100 ];
for ( unsigned int i = 0; i < 100; i++ ) {
spriteArr[ i ] = new cocos2d::CCSprite();
spriteArr[ i ]->initWithFile( "sprite.png" );
spriteArr[ i ]->setPosition( cocos2d::CCPoint( i * 10, 100 ) );
this->addChild( spriteArr[ i ] );
}
Run Code Online (Sandbox Code Playgroud)
这就是问题所在.我只为一个精灵分配内存100次,但我不知道如何以不同的方式做.我该如何优化它?在Cocos2d中是否有一种方法可以使用坐标(x和y)绘制精灵但不为每个相同的精灵分配内存?
导致所有100个精灵使用相同的纹理,所以最好的方法是使用CCSpriteBatchNode.它将在1个单独的OpenGL调用中绘制它们.
CCSpriteBatchNode* batchNode = CCSpriteBatchNode::create("sprite.png", 100);
batchNode->setPosition(CCPointZero);
this->addChild(batchNode);
for(int i = 0;i < 100;++i)
{
CCSprite* sprTest = CCSprite::createWithTexture(batchNode->getTexture());
sprTest->setPosition(ccp(i*10,100));
batchNode->addChild(sprTest);
}
Run Code Online (Sandbox Code Playgroud)