Cocos2d-x   发布时间:2022-05-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了cocos2d-x 利用CCLabelTTF制作文字描边与阴影效果的实现方法大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

方法一:@H_262_5@

cocos2d-x 已经为我们封装好了,方法就在类CCLabelTTF里面。@H_262_5@

void enableShadow(const cCSize &shadowOffset,float shadowOpacity,float shadowBlur,bool mustupdateTexture = truE);  
      
    /** disable shadow rendering */  
    void disableShadow(bool mustupdateTexture = truE);  
      
    /** enable or disable stroke */  
    void enableStroke(const ccColor3B &strokeColor,float strokeSize,bool mustupdateTexture = truE);  
      
    /** disable stroke */  
    void disableStroke(bool mustupdateTexture = truE);  

方法二:

在方法一达不到效果的情况下就只能自己实现了。@H_262_5@

.h文件@H_262_5@

    #ifndef __HelLOWORLD_SCENE_H__  
    #define __HelLOWORLD_SCENE_H__  
      
    #include "cocos2d.h"  
    USING_NS_Cc;  
    using namespace std;  
      
    class HelloWorld : public CCLayer  
    {  
    public:  
        virtual bool init();  
        static CCScene* scene();  
        CREATE_FUNC(HelloWorld);  
          
          
        //给文字添加描边  
        CCLabelTTF* textAddStroke(const char* String,const char* fontName,float fontSize,const ccColor3B &color3,float lineWidth);  
          
        //添加阴影  
        CCLabelTTF* textAddShadow(const char* String,float shadowSize,float shadowOpacity);  
          
        //既添加描边又添加阴影  
        CCLabelTTF* textAddOutlineAndShadow(const char* String,float lineWidth,float shadowOpacity);  
          
    };  
      
    #endif // __HelLOWORLD_SCENE_H__

.cpp文件
    #include "HelloWorldScene.h"  
    #include "SimpleAudioENGIne.h"  
      
    using namespace cocos2d;  
    using namespace CocosDenshion;  
      
    CCScene* HelloWorld::scene()  
    {  
        CCScene *scene = CCScene::create();  
        HelloWorld *layer = HelloWorld::create();  
        scene->addChild(layer);  
        return scene;  
    }  
    bool HelloWorld::init()  
    {  
        if ( !CCLayer::init() )  
        {  
            return false;  
        }  
      
          
        CCSize size = CCDirector::sharedDirector()->getWinSize();  
          
        //创建个背景  
        CCLayerColor* whiteLayer = CCLayerColor::create(ccc4(0,205,255),size.width,size.height);  
        this->addChild(whiteLayer);  
          
        //创建描边  
        CCLabelTTF* outline = textAddStroke("描边 Stroke","Arial",40,ccWHITE,1);  
        outline->setPosition(ccp(size.width*0.5,size.height*0.7));  
        this->addChild(outlinE);  
          
        //创建阴影  
        CCLabelTTF* shadow = textAddShadow("阴影 Shadow",2,200);  
        shadow->setPosition(ccp(size.width*0.5,size.height*0.5));  
        this->addChild(shadow);  
          
        //创建描边加阴影  
        CCLabelTTF* outlineshadow = textAddOutlineAndShadow("描边加阴影 Outlineshadow",1,4,200);  
        outlineshadow->setPosition(ccp(size.width*0.5,size.height*0.3));  
        this->addChild(outlineshadow);  
          
        return true;  
    }  
      
    /* 
     制作文字描边效果是很简单的,我们写好一段文字之后,也就是创建出一个CCLabelTTF,称之为正文CCLabelTTF。然后再创建出4个CCLabelTTF,颜色为黑色,大小同正文CCLabelTTF相同, 
     称之为描边CCLabelTTF。说到这大家可能已经明白了,没错,就是把4个描边CCLabelTTF放于正文CCLabelTTF的下面,分别于左右上下与正文CCLabelTTF错开,这样描边效果就实现啦。。 
      
     *String     文本 
     *fontName   文本字体类型 
     *fontSize   文本大小 
     *color3     文本颜色 
     *lineWidth  所描边的宽度 
     */  
    CCLabelTTF* HelloWorld::textAddStroke(const char* String,float lineWidth)  
    {  
        //正文CCLabelTTF  
        CCLabelTTF* center = CCLabelTTF::create(String,fontName,fontSizE);  
        center->setColor(color3);  
          
        //描边CCLabelTTF 上  
        CCLabelTTF* up = CCLabelTTF::create(String,fontSizE);  
        up->setColor(ccBLACK);  
        up->setPosition(ccp(center->getContentSize().width*0.5,center->getContentSize().height*0.5+lineWidth));  
        center->addChild(up,-1);  
      
        //描边CCLabelTTF 下  
        CCLabelTTF* down = CCLabelTTF::create(String,fontSizE);  
        down->setColor(ccBLACK);  
        down->setPosition(ccp(center->getContentSize().width*0.5,center->getContentSize().height*0.5-lineWidth));  
        center->addChild(down,-1);  
          
        //描边CCLabelTTF 左  
        CCLabelTTF* left = CCLabelTTF::create(String,fontSizE);  
        left->setPosition(ccp(center->getContentSize().width*0.5-lineWidth,center->getContentSize().height*0.5));  
        left->setColor(ccBLACK);  
        center->addChild(left,-1);  
          
        //描边CCLabelTTF 右  
        CCLabelTTF* right = CCLabelTTF::create(String,fontSizE);  
        right->setColor(ccBLACK);  
        right->setPosition(ccp(center->getContentSize().width*0.5+lineWidth,center->getContentSize().height*0.5));  
        center->addChild(right,-1);  
          
        return center;  
    }  
      
      
    /* 
     给文字添加阴影,一看就懂的。。。 
     *String         文本 
     *fontName       文本字体类型 
     *fontSize       文本大小 
     *color3         文本颜色 
     *shadowSize     阴影大小 
     *shadowOpacity  阴影透明度 
     */  
    CCLabelTTF* HelloWorld::textAddShadow(const char* String,float shadowOpacity)  
    {  
        CCLabelTTF* shadow = CCLabelTTF::create(String,fontSizE);  
        shadow->setColor(ccBLACK);  
        shadow->setOpacity(shadowOpacity);  
          
        CCLabelTTF* center = CCLabelTTF::create(String,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* HelloWorld::textAddOutlineAndShadow(const char* String,float shadowOpacity)  
    {  
        CCLabelTTF* center = textAddStroke(String,fontSize,color3,lineWidth);  
          
        CCLabelTTF* shadow = CCLabelTTF::create(String,fontSizE);  
        shadow->setPosition(ccp(center->getContentSize().width*0.5+shadowSize,center->getContentSize().height*0.5-shadowSizE));  
        shadow->setColor(ccBLACK);  
        shadow->setOpacity(shadowOpacity);  
        center->addChild(shadow,-1);  
          
        return center;  
    }

效果如图:@H_262_5@

@H_262_5@

大佬总结

以上是大佬教程为你收集整理的cocos2d-x 利用CCLabelTTF制作文字描边与阴影效果的实现方法全部内容,希望文章能够帮你解决cocos2d-x 利用CCLabelTTF制作文字描边与阴影效果的实现方法所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。