游戏标题走马灯特效

From: http://www.waitingfy.com/archives/1398

我不知道下面讲的特效的名称,就先叫走马灯特效吧,我也不知道真的走马灯特效是怎样的。这个有点像人浪效果。大致有两种方式实现。当然帧动画也可以做,但帧动画不在我们的讨论范围。程序实现有好处:速度好修改,美工的工作量变小

1. 每个独立变化

 

 

实现原理:大家先不要看整体效果,先特定关注单个字,比如第一个E字,它其实只有两个状态:一个实心,一个空心。它一直在重复一个动作:先变成实心的,很快就变成空心的,再变成实心,再空心…这样反复的交替。注意一个特点:实心出现的停留时间短些,空心的停留时间长些。 再看第二字,U,完全跟E是一个动作,只是比E慢一些时间出现。突然想起来这个效果就是球场上的人浪效果。每个人都有两个状态,站起来和蹲下,只是从左到右开始的时间不同。

 

cocos2d具体实现:自定义一个class,继承sprite,它的初始状态都是空心的图片,每一个精灵的开始执行重复动画的delay不同,但是间隔时间差是一样的,比如第一个是1秒,接下来就是1.2 , 1.4, 1.6, 1.8, 2.0.   0.6秒后切换到实心的样子只停留0.6秒,然后切换到空心的样子,停留1.6秒后切换到空心。这样反复的做。如果你想这个”人浪效果”从左往右的速度快一些。要好好地调一下这些delay的时间和停留的时间。

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void TitleSprite::extraInit( float delayTime){
     auto seq = Sequence::create(DelayTime::create(delayTime), CallFunc::create(CC_CALLBACK_0(TitleSprite::changeToPressFrame, this )), NULL);
     this ->runAction(seq);
}
 
void TitleSprite::changeToNormalFrame(){
     this ->setSpriteFrame(_normalFrameName);
     auto changeFrameAction = Sequence::create(DelayTime::create(1.6), CallFunc::create(CC_CALLBACK_0(TitleSprite::changeToPressFrame, this )), NULL);
     this ->runAction(changeFrameAction);
}
 
void TitleSprite::changeToPressFrame(){
     this ->setSpriteFrame(_pressFrameName);
     auto changeFrameAction = Sequence::create(DelayTime::create(0.6), CallFunc::create(CC_CALLBACK_0(TitleSprite::changeToNormalFrame, this )), NULL);
     this ->runAction(changeFrameAction);
}

 

2. 羽化图片刷过去

 


 

这种是不同上面的实现方式,是用一张斜的白色且边缘羽化的图片,从左往右移动实现的。因为之前讲过具体实现方式,这里就不赘述了,参考文章cocos2d js ClippingNode 制作标题闪亮特效   这里的效果看起来比较傻,是为了演示用的。真的效果是这样的,先是一个砸下去的效果,然后从左往右刷一遍。加上音效还是比较酷的。

http://www.waitingfy.com/archives/1398

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值