用ClippingNode实现文字AVG游戏的对话字幕效果

玩文字AVG游戏主要的行为就是阅读角色的对话(当然还包括欣赏立绘和CG音乐),然后在适时地做出选择。玩过的朋友都知道一般对话都是一个字一个字显示出来的,文字显示的速度可以调节,点击鼠标就把整句话显示出来。这个效果如何用Cocos2dx做出来呢?经过网上一番搜索,基本上用ClippingNode可以实现。主要参考的文章有这么几篇:

http://shahdza.blog.51cto.com/2410787/1561937

http://blog.csdn.net/ac_huang/article/details/39554967

可以先学习一下ClippingNode的基本原理。


其实有点像剪纸,主要需要考虑四个问题:

1. 剪哪张纸?

2. 剪什么形状的?

3. 使用剪下来的哪一部分?

4. 贴到什么上面?

第一个问题决定了ClippingNode对象的child都有谁,可以有多个Node,要通过addChild添加,多个Node结合成为要剪的纸。

第二个问题决定了stencil,stencil本身也是一个Node,所以也可以包含多个子Node,比如我们需要多个图形的时候就把各个sprite分别添加到Node中,多个Node组合出的图形就是要剪的形状。然后再把Node用setStencil把这个节点加到ClippingNode对象里,每个ClippingNode对象只能有一个stencil。需要注意的是该Node本身的texture并没有意义,需要的只是轮廓。

第三个问题决定是否reverse。ClippingNode有一个reverse属性,默认是false,也就是取剪下来的部分。比如在一张正方形的纸上剪一个圆下来,false的话就是把实心的圆形本身贴到背景上,如果是true的话就是把一个有圆形镂空的正方形贴上去。

第四个问题与clippingnode对象本身无关,你要考虑的是背景,就是你把clippingnode对象add到哪个layer。


然后回过头来考虑我们的需求,我们需要的是一段文字逐字显示,这里采用的方案是“剪一张写好整段文字的纸,一个字一个字的剪,把剪下来的的字贴到背景上”。

问题

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值