关于Cocos2d-x中使用自定义地图等对象的缩放与拖动的实现

本文介绍如何使用Cocos2d-x创建公交线路的地图显示,并实现地图的缩放与拖动功能。主要内容包括:构建多层次的地图元素,利用ScrollView实现地图拖动,采用Slider滑动条完成地图缩放。

近日在做数据结构课程设计,题目是公交线路上优化路径的查询。图形方面需要实现可视化的地图,同时最好能够实现缩放与拖动。经过一番折腾后大致实现了此功能,方法并不困难,在此提供一下方法,给没有好想法或在高端技术实现上遇到困难的童鞋们一点思维的启迪。


首先,我们需要一个大的Layer,这个Layer用来绘制所有的地图元素信息,包括公交线路、站点图标、导航、背景图等等;


接着,我们要在这个大的Layer中使用addChild方法添加几个小的Layer,用来专门绘制不同的元素(主要目的是方便管理);

当然,Cocos2d-x中提供了DrawNode类,我们也可以添加多个DrawNode对象分别绘制不同元素而不是添加多个Layer,具体实现岁自己喜欢;


当实现了大Layer中各种绘图后,我们需要把这个大的Layer实例化对象后,放入Scene中的一个ScrollView(ui/UIScrollView.h)中即可,当然ScrollView要设置裁剪、垂直水平滑动及回弹效果(也是随自己喜欢),记得使用ScrollView的setInnerContainerSize(layer->getContentSize());确保ScrollView组建能够通过滑动查看到layer的每个角落(在缩放后也要记得调用此方法实时更新容器大小哦)。


到这一步其实我们已经可以达到地图的拖动效果了,接下来实现地图的缩放。博主折腾了一下午的手势缩放发现传递不能......可能是自己项目设计的锅(项目:这锅我不背),采用了Slider滑动条实现了地图缩放。当要实现地图缩放时,只需要在layer来看的父节点(或者只要不在layer内部调用即可?)内调用layer->setScale(6.66f);即可,此时layer内部多个层上的元素都会跟随layer的缩放而缩放。


至此,我们的自定义地图就完全实现了缩放与拖动。


转载请注明原地址。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值