cocos2d 画中画效果

1.效果图


2.如何实现理论

 


我们以2张图作为实例。最外面的大图,还有就是红色框框中的图。 这两张图的尺寸是一样的。

准备工作我们就做2件事情:

1.把第二张图缩小,向右旋转添加到第一张图中,看起来还是第一张图

2.把第一张图的锚点设置为紫色的那个点(非常重要,这样缩放才有较好的效果

用户手指滑动的时候,我们做的事情:

1.第一张图同时run 3个action,放大,向左旋转,位移

移动的位置比较讲究,结果是要把紫色的点移动到屏幕中间。(这个点就比较难计算


3.实现的难点


1.已知一个精灵中的点,求它对应锚点?

比如一张图片它的宽度是500,高度400. 那么p(200,300)这个点对应的锚点是多少?

 float anchorPointX = 200 / width;
		   float anchorPointY = 300 / height;

就是当前位置的x,y分别除以这个图片的宽,高度。


2.一个精灵本来是在屏幕中心的,现在有一个点p(200,300), 如何移动这个精灵使得,结果是p(200,300)这个点居于屏幕中心?

Vec2 worldPosition = smallSprite->convertToNodeSpace(Vec2(WIN_WIDTH/2, WIN_HEIGHT /2));
		Vec2 pos = worldPosition - Vec2(smallSprite->getContentSize().width * 0.5, smallSprite->getContentSize().height * 0.5);

2张图慢慢搞,还是可以成功。那么5,6张图呢?

我尝试过按照2张图那样搞,一次全部添加,缩放会有问题,因为倍数太大了,导致了模糊。所以只能弄成一个组

0,1  

1,2  

2,3 

3,4

4,5

每次都是显示2组,刚开始显示 3,4 ,4,5  这两组,3,4隐藏,显示4,5,在4继续往左滑动就隐藏4,5,显示3,4。一旦用户在3这个状态继续往左滑动,就变成 2,3,3,4这2组。

逻辑是这样,实现起来还是需要费点时间。就这样吧。

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

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Cocos2d-x中实现流光效果可以使用shader来进行渲染。首先,我们需要创建一个自定义的shader,并将其应用于需要实现流光效果的节点上。 在使用Cocos2d-x的过程中,我们可以使用GLSL语言编写shader代码。在实现流光效果的shader中,我们可以通过改变像素的颜色和透明度来创建流动的效果。 首先,我们定义一个uniform变量time,用于控制流光的移动速度。然后,在片段着色器中,通过改变颜色和透明度的计算公式来实现流动的效果。我们可以使用sin函数或者其他数学函数来计算出每个像素点的颜色和透明度,然后将其应用到节点上。 在节点的渲染流程中,我们将这个自定义的shader应用到节点上,然后传入时间参数,即更新uniform变量time的值。随着时间的增加,我们就可以看到节点上的流光效果在不断地移动。 为了实现更加逼真的流光效果,我们可以尝试给流光添加一些额外的效果,比如模糊、叠加等。通过调整shader代码中的计算公式和传入的参数,我们可以根据自己的需求来调整流光效果的强度和样式。 总结起来,在Cocos2d-x中实现流光效果需要创建一个自定义的shader,并将其应用于需要实现效果的节点上。通过改变颜色和透明度的计算公式、传入时间参数等,我们可以实现一个流光效果,使节点看起来具有流动的动画效果

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

瓦力冫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值