cocos2dx 获取精灵范围以及相关的一些应用

最近在玩部落冲突,看到其中有一种比较好的讲解角色技能的展现方式,就是在角色的那个图标某个角角上,例如右上角,有一个感叹号的图标,点击就可以弹出相关的信息介绍弹窗,这种展现方式比较节省空间,也直接,于是考虑了一下实现方式,由此引申出本文要讨论的一些问题。

其实实现这样的呈现方式最主要的问题就是在于怎样找到图标的右上角,很直接的一个想法就是,首先我们可以获得图标的位置,然后计算出这个感叹号的位置,我们可以列举出这样一个计算公式:

假设图标的位置为pos(x1,y1),图标的大小为高h1,宽w1,感叹号图标的高为h2,宽w2,则感叹号图标的纵坐标为:

y2 = y1 + h1/2 - h2/2

这里我们默认描点在图标中心,先减去图标自身二分之一的高度,使位置到图标的最上端,如果使用这个位置,将导致感叹号图标的超出图标的感叹号图标高度的一半,因为描点在中心,所以我们再减去这个部分,就可以设置好高度。

同理,横坐标可以根据如下公式计算得到:

x2 = x1 + w1/2 - w2/2

有了这样的计算公式,接下来我们的问题就是如果获得精灵的长宽。

我们先看看第一种方案,cocos2dx给我们提供了这样一个函数:getContentSize(),通过这个函数我们可以获得精灵原始的长宽,这里为什么要说原始,因为我们在使用精灵的时候经常会对其进行缩放操作,当发生缩放操作后,这个函数返回的值就失效了,如果要进行修正也比较简单,将getContentSize()获得的高度和宽度乘以精灵的缩放系数就可以了。

第二种方案我没有进行过测试,不过理论上是可以的,cocos2dx中有boundingBox 这个函数所获得的,就是精灵缩放后的大小了,后面我也会进行测试,大家也可以试试。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值