请教大虾,cocos2d-x中:
现在有两个texture2d对象,放着两个图片。
我要把两个texture2d绘制到一个sprite里面,最好能绘制到另一个texture2d中,然后生成一个sprite?
但是不知道具体怎么做,试了几次貌似都行不通…
bow~~~
请教大虾,cocos2d-x中:
现在有两个texture2d对象,放着两个图片。
我要把两个texture2d绘制到一个sprite里面,最好能绘制到另一个texture2d中,然后生成一个sprite?
但是不知道具体怎么做,试了几次貌似都行不通…
bow~~~
用RenderTexture把两个精灵画出来,getSprite() 然后getTexture()然后创建精灵
好呀,那就这么办。
哪里有例子可以参考不?多谢。
— Begin quote from ____
引用第1楼windyqiang于2015-02-25 09:22发表的 回 楼主(hxysk) 的帖子 :
用RenderTexture把两个精灵画出来,getSprite() 然后getTexture()然后创建精灵 http://www.cocoachina.com/bbs/job.php?action=topost&tid=286004&pid=1246165
— End quote
参考http://www.cnblogs.com/pengyingh/articles/2438624.html
我在helloworldscene中的init()中加入如下代码:
// CCRenderTexture test code
float sw=pSpritea->getTexture()->getPixelsWide();
float sh=pSpritea->getTexture()->getPixelsHigh();
m_pTarget = CCRenderTexture::create(sw*2, sh);
this->addChild(m_pTarget,-1);
m_pTarget->begin();
//m_pTarget->setPosition(0,sh/2.0f);
CCSprite* tpSpritea = CCSprite::create();
tpSpritea->initWithFile("blocks.png");
//tpSpritea->setScale(0.5f);
tpSpritea->setPosition(ccp(sw*0.5f,sh/2.0f));
tpSpritea->autorelease();
//this->addChild(tpSpritea);
tpSpritea->visit();
//tpSpritea->autorelease();
//m_pTarget->setPosition(sw,sh/2.0f);
CCSprite* tpSpriteb = CCSprite::create();
tpSpriteb->initWithFile("blocks.png");
//tpSpriteb->setScale(0.5f);
tpSpriteb->setPosition(ccp(sw*1.5f,sh/2.0f));
tpSpriteb->autorelease();
//this->addChild(tpSpritea);
tpSpriteb->visit();
//tpSpriteb->autorelease();
m_pTarget->end();
// CCRenderTexture test code
CCSprite* pSpritef = CCSprite::create();
mt=m_pTarget->getSprite()->getTexture();
pSpritef->initWithTexture(mt);
pSpritef->autorelease();
pSpritef->setPosition(ccp(size.width/2+50, size.height/2-100));
this->addChild(pSpritef);
然后看到成功生成想要的精灵,但是一看到期望的图像后立即跳出错误提示:未处理的异常。
有时候中断在了node的visit()函数处。
有时候是在这里:
请问大侠有何建议?
bow~~
看到目标图片已经拼接在一起了,只是上下颠倒了…
下图红框中的就是目标图片:
问题解决了,貌似那个目标sprite不能使用autorelease
pSpritef->autorelease(); //这句去掉就OK