cocos2dx中CCLabelTTF的描边和阴影
时间:2014-03-05 17:30:32
收藏:0
阅读:646
游戏中经常会用到文字描边和阴影,当cocos2dx中并没有给我们提供,下面是我参考:点击打开链接(http://blog.csdn.net/song_hui_xiang/article/details/17375279)自己弄了一个,基本上是一模一样,不喜勿喷!代码如下:
思路:多个CCLabelTTF重叠在一起。
头文件
// // CLabel.h // XXX // // Created by user on 14-3-4. // // #ifndef __XXX__CLabel__ #define __XXX__CLabel__ #include <iostream> #include "cocos2d.h" USING_NS_CC; namespace CLabel{ /*使用示例 CCSize size = CCDirector::sharedDirector()->getWinSize(); //创建个背景 CCLayerColor* whiteLayer = CCLayerColor::create(ccc4(0, 205, 205, 255), size.width, size.height); this->addChild(whiteLayer); //创建描边 CCLabelTTF* outline = CLabel::textAddOutline("描边 Outline", "Arial", 40, ccWHITE, 1); outline->setPosition(ccp(size.width*0.5, size.height*0.7)); this->addChild(outline); //创建阴影 CCLabelTTF* shadow = CLabel::textAddShadow("阴影 Shadow", "Arial", 40, ccWHITE, 2, 200); shadow->setPosition(ccp(size.width*0.5, size.height*0.5)); this->addChild(shadow); //创建描边加阴影 CCLabelTTF* outlineShadow = CLabel::textAddOutlineAndShadow("描边加阴影 OutlineShadow", "Arial", 40, ccWHITE, 1, 4, 200); outlineShadow->setPosition(ccp(size.width*0.5, size.height*0.3)); this->addChild(outlineShadow); */ //************************************************************************** // 给文字添加描边 //************************************************************************** CCLabelTTF* textAddOutline(const char* string, // 显示的文字 const char* fontName, // 字体名称 float fontSize, // 字体大小 const ccColor3B &color3, // 字体颜色 float lineWidth); // 描边宽度 //************************************************************************** // 添加阴影 CCLabelTTF* textAddShadow(const char* string, // 显示的文字 const char* fontName, // 字体名称 float fontSize, // 字体大小 const ccColor3B &color3, // 字体颜色 float shadowSize, // 阴影宽度 float shadowOpacity); // 阴影透明度 //************************************************************************** //************************************************************************** // 既添加描边又添加阴影 //************************************************************************** CCLabelTTF* textAddOutlineAndShadow(const char* string, // 显示的文字 const char* fontName, // 字体名称 float fontSize, // 字体大小 const ccColor3B &color3,// 阴影颜色 float lineWidth, // 字体宽度 float shadowSize, // 阴影宽度 float shadowOpacity); // 阴影透明度 }; #endif /* defined(__XXX__CLabel__) */
// 源文件
// // CLabel.cpp // XXX // // Created by user on 14-3-4. // // #include "CLabel.h" namespace CLabel{ /* 制作文字描边效果是很简单的,我们写好一段文字之后,也就是创建出一个CCLabelTTF,称之为正文CCLabelTTF。然后再创建出4个CCLabelTTF,颜色为黑色,大小同正文CCLabelTTF相同, 称之为描边CCLabelTTF。说到这大家可能已经明白了,没错,就是把4个描边CCLabelTTF放于正文CCLabelTTF的下面,分别于左右上下与正文CCLabelTTF错开,这样描边效果就实现啦。。 *string 文本 *fontName 文本字体类型 *fontSize 文本大小 *color3 文本颜色 *lineWidth 所描边的宽度 */ CCLabelTTF* textAddOutline(const char* string, const char* fontName, float fontSize,const ccColor3B &color3,float lineWidth) { //描边CCLabelTTF 左 CCLabelTTF* left = CCLabelTTF::create(string, fontName, fontSize); left->setColor(ccBLACK); //描边CCLabelTTF 右 CCLabelTTF* right = CCLabelTTF::create(string, fontName, fontSize); right->setColor(ccBLACK); right->setPosition(ccp(left->getContentSize().width*0.5+lineWidth*2,left->getContentSize().height*0.5)); left->addChild(right); //描边CCLabelTTF 上 CCLabelTTF* up = CCLabelTTF::create(string, fontName, fontSize); up->setColor(ccBLACK); up->setPosition(ccp(left->getContentSize().width*0.5+lineWidth, left->getContentSize().height*0.5+lineWidth)); left->addChild(up); //描边CCLabelTTF 下 CCLabelTTF* down = CCLabelTTF::create(string, fontName, fontSize); down->setColor(ccBLACK); down->setPosition(ccp(left->getContentSize().width*0.5+lineWidth, left->getContentSize().height*0.5-lineWidth)); left->addChild(down); //正文CCLabelTTF CCLabelTTF* center = CCLabelTTF::create(string, fontName, fontSize); center->setColor(color3); center->setPosition(ccp(left->getContentSize().width*0.5+lineWidth, left->getContentSize().height*0.5)); left->addChild(center); return left; } /* 给文字添加阴影,一看就懂的。。。 *string 文本 *fontName 文本字体类型 *fontSize 文本大小 *color3 文本颜色 *shadowSize 阴影大小 *shadowOpacity 阴影透明度 */ CCLabelTTF* textAddShadow(const char* string, const char* fontName, float fontSize,const ccColor3B &color3,float shadowSize,float shadowOpacity) { CCLabelTTF* shadow = CCLabelTTF::create(string, fontName, fontSize); shadow->setColor(ccBLACK); shadow->setOpacity(shadowOpacity); CCLabelTTF* center = CCLabelTTF::create(string, fontName, fontSize); center->setColor(color3); center->setPosition(ccp(shadow->getContentSize().width*0.5-shadowSize, shadow->getContentSize().height*0.5+shadowSize)); shadow->addChild(center); return shadow; } //既添加描边又添加阴影 CCLabelTTF* textAddOutlineAndShadow(const char* string, const char* fontName, float fontSize,const ccColor3B &color3,float lineWidth,float shadowSize,float shadowOpacity) { CCLabelTTF* shadow = CCLabelTTF::create(string, fontName, fontSize); shadow->setColor(ccBLACK); shadow->setOpacity(shadowOpacity); CCLabelTTF* left = CCLabelTTF::create(string, fontName, fontSize); left->setColor(ccBLACK); left->setPosition(ccp(shadow->getContentSize().width*0.5-shadowSize, shadow->getContentSize().height*0.5+shadowSize)); shadow->addChild(left); CCLabelTTF* right = CCLabelTTF::create(string, fontName, fontSize); right->setColor(ccBLACK); right->setPosition(ccp(left->getContentSize().width*0.5+lineWidth*2,left->getContentSize().height*0.5)); left->addChild(right); CCLabelTTF* up = CCLabelTTF::create(string, fontName, fontSize); up->setColor(ccBLACK); up->setPosition(ccp(left->getContentSize().width*0.5+lineWidth, left->getContentSize().height*0.5+lineWidth)); left->addChild(up); CCLabelTTF* down = CCLabelTTF::create(string, fontName, fontSize); down->setColor(ccBLACK); down->setPosition(ccp(left->getContentSize().width*0.5+lineWidth, left->getContentSize().height*0.5-lineWidth)); left->addChild(down); CCLabelTTF* center = CCLabelTTF::create(string, fontName, fontSize); center->setColor(color3); center->setPosition(ccp(left->getContentSize().width*0.5+lineWidth, left->getContentSize().height*0.5)); left->addChild(center); return shadow; } }
使用时,加上命名空间就可以拉,下面是使用示例:
CCSize size = CCDirector::sharedDirector()->getWinSize(); //创建描边 CCLabelTTF* outline = CLabel::textAddOutline("描边 Outline", "Arial", 40, ccWHITE, 1); outline->setPosition(ccp(size.width*0.5, size.height*0.7)); this->addChild(outline); //创建阴影 CCLabelTTF* shadow = CLabel::textAddShadow("阴影 Shadow", "Arial", 40, ccWHITE, 2, 200); shadow->setPosition(ccp(size.width*0.5, size.height*0.5)); this->addChild(shadow); //创建描边加阴影 CCLabelTTF* outlineShadow = CLabel::textAddOutlineAndShadow("描边加阴影 OutlineShadow", "Arial", 40, ccWHITE, 1, 4, 200); outlineShadow->setPosition(ccp(size.width*0.5, size.height*0.3)); this->addChild(outlineShadow);
cocos2dx中CCLabelTTF的描边和阴影,布布扣,bubuko.com
原文:http://blog.csdn.net/xufeng0991/article/details/20482851
评论(0)