cocos2d/-x 用CCRenderTexture为一个CCLabelTTF创建阴影。
来源:互联网 发布:新概念英语怎么用 知乎 编辑:程序博客网 时间:2024/05/23 18:31
游戏UI中为了使字体更加漂亮,通常需要为字体添加一个阴影。其实不用美工,程序就可以添加。先为CCLabelTTF创建一个CCRenderTexture:
CCRenderTexture* CCLabelTTFWithStroke::createStroke(cocos2d::CCLabelTTF *label,float size,ccColor3B cor){//目标label,纹理的大小,和颜色
CCRenderTexture* rt = CCRenderTexture::create(label->getTexture()->getContentSize().width + size*2, label->getTexture()->getContentSize().height + size*2);
CCPoint originalPos = label->getPosition();
ccColor3B originalColor = label->getColor();
bool originalVisibility = label->isVisible();
label->setColor(cor);
label->setVisible(true);
ccBlendFunc originalBlend = label->getBlendFunc();
label->setBlendFunc((ccBlendFunc){GL_SRC_ALPHA, GL_ONE });
CCPoint bottomLeft = ccp(label->getTexture()->getContentSize().width*label->getAnchorPoint().x + size, label->getTexture()->getContentSize().height*label->getAnchorPoint().y + size);
CCPoint positionOffset =ccp(label->getTexture()->getContentSize().width*label->getAnchorPoint().x - label->getTexture()->getContentSize().width/2, label->getTexture()->getContentSize().height*label->getAnchorPoint().y - label->getTexture()->getContentSize().height/2);
CCPoint position = ccpSub(originalPos, positionOffset);
rt->begin();
for (int i =0; i<360; i+=30) {
label->setPosition(ccp(bottomLeft.x +sin(CC_DEGREES_TO_RADIANS(i))*size,bottomLeft.y +cos(CC_DEGREES_TO_RADIANS(i))*size));
label->visit();
}
rt->end();
label->setPosition(originalPos);
label->setColor(originalColor);
label->setBlendFunc(originalBlend);
label->setVisible(originalVisibility);
rt->setPosition(position);
return rt;
}
CCRenderTexture* stroke = createStroke(m_label,m_strokeSize, m_stokeColor);
CCSprite* strokeSprite= CCSprite::createWithTexture(stroke->getSprite()->getTexture());
。这时候只需要把strokeSprite加在CCLabelTTF的下面就可以了。
但是通常需要改变CCLabelTTF的内容。可以封装一个类,创建label的时候一起创建strokeSprite。改变CCLabelTTF的内容的时候只需要创建新的
CCRenderTexture,然后让strokeSprite重新setTexture就可以了:
CCRenderTexture* stroke = createStroke(m_label,m_strokeSize, m_stokeColor);
m_strokeSprite->setTexture(stroke->getSprite()->getTexture());
- cocos2d/-x 用CCRenderTexture为一个CCLabelTTF创建阴影。
- cocos2d-x CCLabelTTF文字描边与阴影效果
- cocos2d-x CCRenderTexture
- cocos2d-x CCRenderTexture
- 如何使用CCRenderTexture创建动态纹理 Cocos2d-x 2.1.4
- 如何使用CCRenderTexture创建动态纹理 cocos2d-x-3.0alpha0
- 如何使用CCRenderTexture创建动态纹理 Cocos2d-x 2.1.4
- 如何使用CCRenderTexture创建动态纹理 Cocos2d-x 2.1.4
- 如何使用CCRenderTexture创建动态纹理 Cocos2d-x 2.1.4
- 如何使用CCRenderTexture创建动态纹理 Cocos2d-x 2.1.4
- 如何使用CCRenderTexture创建动态纹理 Cocos2d-x 2.1.4
- cocos2d-x 利用CCLabelTTF制作文字描边与阴影效果的实现方法
- cocos2d-x 利用CCLabelTTF制作文字描边与阴影效果的实现方法
- cocos2d-x 利用CCLabelTTF制作文字描边与阴影效果的实现方法
- cocos2d-x 利用CCLabelTTF制作文字描边与阴影效果的实现方法
- 如何使用CCRenderTexture创建动态纹理 Cocos2d-x 2.1.4 含iOS版源代码
- 更改 cocos2d-x CCRenderTexture 的使用方式
- cocos2d-x 字体描边CCRenderTexture glBlendFunc
- 妙用slmgr命令保护Windows7密钥安全
- linux守护进程原理及创建详解
- 将数据库中内容展示在前台页面上
- FilePermission详解
- 技巧:在双系统下轻松删除Windows7
- cocos2d/-x 用CCRenderTexture为一个CCLabelTTF创建阴影。
- 简单设置 让Windows7自动更新驱动程序
- Android地图导航工具 - mapsforge
- poj3709 2进制转化为3进制
- 设计模式基础知识
- 用Windows 7截图工具和画图软件快乐玩涂鸦
- 最长公共子字符串 (Longest Common Substring)
- 再弄一片文章凑个4篇文章的数,主要是用于XML和 Binary序列化和反序列化的类
- Android学习笔记之AndroidManifest.xml文件解析