cocos2d-android - 1.地图动态加载原理(世界地图的实现)
1.前言最近需要使用cocos2d实现一个小程序,但是由于地图太大,导致在load地图的时候栈被撑爆了,所以只能研究一下怎样能够实现地图的动态加载,从而减小内存压力。 2.原理1.总思路原理上,屏幕只占了地图的一小部分,屏幕所占的位置被刷新,而地图的大部分地方不被刷新,当屏幕移动时,前方的区域新增,后方的区域移除。这种是最理想的一种方式。 2.动态刷新地图思路在实际情况中,我们需要将地图栅格化了才能方便的实现地图的动态加载,栅格化就是如下的意思。 3.实现过程1.无缝加载地图在我们拿到n块地图后,如何让地图无缝的拼接在一起是第一个问题。 2.屏幕边缘检测1.获得屏幕对角点 通过图3可知,我们必须了解到屏幕的4条边各处在什么位置,这样才能了解到屏幕显示的瓦片地图的区域,通过简化,我们需要知道屏幕对角的两个点所处的位置。即图上这两点的位置。 2.计算屏幕对角点所处行列 raw = y/150;//y坐标除以瓦片的竖向高度取摩
col = x/300;//x坐标除以瓦片的横向高度取摩
aRaw = 30/150;
aCol = 50/300;
bRaw = 280/150;
bCol = 850/300;
A点处在瓦片(0,0)上,B点处在(2,1)上。 3.地图加载时机cocos2d-android支持线程刷新部件,所以启动一个线程并且不断的检测屏幕位置,刷新新的瓦片,移除旧的瓦片即可。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- NetworkStream,是否有类似于SerialPort的DataReceived? (C
- Sqlite:CURRENT_TIMESTAMP是在GMT,而不是机器的时区
- Json.NET and Sitemaps.NET and Utilities.NET
- React-Native运行机制简介
- Flex4 DateField自定义的日期选择控件,可选择时分秒
- [Swift Weekly Contest 110]LeetCode937. 重新排列日志文件
- sqlite3自增key设定(创建自增字段)
- c – 在文件路径中添加尾部斜杠是否有成语?
- ruby-on-rails – Ruby / Rails中的整数序数化
- oracle的LISTAGG函数 和 REGEXP_SUBSTR函数的使用