加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

cocos2dx 制作特效文本

发布时间:2020-12-14 20:00:24 所属栏目:百科 来源:网络整理
导读:原理: 1. 先在RenderTexture上渲染文字 2. 通过RenderTexture:newImage来获取到Image并依此得到对应的Texture 3 通过Texture构造Sprite,将生成的Sprite作为ClippingNode的模板(stencil) 4. ClippingNode的底图可以随意放置,这样我们就可以还不错的文字效

原理:

1. 先在RenderTexture上渲染文字

2. 通过RenderTexture:newImage来获取到Image并依此得到对应的Texture

3 通过Texture构造Sprite,将生成的Sprite作为ClippingNode的模板(stencil)

4. ClippingNode的底图可以随意放置,这样我们就可以还不错的文字效果啦:)


-- 添加特效文本
-- example: addEffectText(self,300,400,"大家好",30,"1.png"); 
function addEffectText(parent,x,y,str,fontSize,bg)
    local target = cc.RenderTexture:create(640,50);   
    target:retain();
    target:setPosition(100,100);

    local text = cc.Label:createWithTTF(str,"fonts/simhei.ttf",fontSize);
    text:setColor(cc.c3b(255,0));
    text:setPosition(320,25);

    target:begin();
    text:visit();
    target:endToLua();
   
    local function copyImage()
        local pImage = target:newImage();

        local tex = cc.Director:getInstance():getTextureCache():addImage(pImage,str);

        local sprite = cc.Sprite:createWithTexture(tex);
        local clippingNode = cc.ClippingNode:create();
        local image = cc.Sprite:create(bg);
        clippingNode:setStencil(sprite);
        clippingNode:addChild(image);
        clippingNode:setAlphaThreshold(0.1);
        clippingNode:setPosition(x,y);
        parent:addChild(clippingNode);
        
        target:release();
    end
    
    performWithDelay(parent,copyImage,0.01);
end

效果:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读