用CCRenderTexture就可以了,不知是否有更好的方法。
if (!miniMap) { miniMap=CCSprite::create(); miniMap->setZOrder(1000); CCDirector::sharedDirector()->getRunningScene()->addChild(miniMap); } miniMap->setVisible(false);//设为false后在visit的时候就不会画到CCRenderTexture里了 CCPoint sPoint=mScene->getPosition(); CCRenderTexture *tex=CCRenderTexture::create(640, 960); tex->setPosition(sPoint); tex->begin(); CCDirector::sharedDirector()->getRunningScene()->visit(); tex->end(); miniMap->setDisplayFrame(tex->getSprite()->displayFrame()); tex->release(); miniMap->setPosition(x,y); miniMap->setScale(0.125); miniMap->setVisible(true);
可以在没一帧更新的时候做个判断,如果有运动,就绘制,减少不必要的绘图。