地图是1000*800的,太大了,有什么办法吗?我用Bitmap.CreatBitmap()函数来截一块地图画,用的时间也长。怎么解决啊

解决方案 »

  1.   


    1.现在是一张大的地图。
    2.分时分区加载是对的。那个“区”怎么分出来,用CreatBitmap函数,每次划分一部分地图出来,时间上还是不少。
      

  2.   

    1、用游戏框架,cocos 2d有android 版的
    2、自己手写不现实。不要以为只是简单的载入一张图片而已。背后涉及到很多东西。首先,你加载进去是放在哪块内存里?paint 的时候效率高不高?用普通的ui绘图方式根本不现实。其次,内存占用过高,很有可能oom。1000*800 = 1024*1024 *4 = 4m,你一个进程只有16m。最后,游戏的地图是用一个个小的tile合成的,并且一般是多层地图,直接一张载入是很不现实的事
      

  3.   

    我用 Runtime.getRuntime().freeMemory()查看内存,内存剩余为80 00 00,总内存为33 46 416 ,这样的结果,是内存不足引起的执行函数慢吗?
    其实,就是执行Bitmap.CreatBitmap(bm,x,x,x,x)时间太长,超过了100ms,其中bm是一个较大的图,1024*256的,大小是200k,截取480*320的图,就是这里的问题,有办法吗?
      

  4.   

    1、android没有swap机制,所以内存不足不会让程序运行慢(不考虑gc影响的话),但有可能让程序崩溃
    2、做游戏的话,对性能要求很高,所以很多时候,并不仅仅是调API这么简单。尽管你能实现功能,但不代表这个功能就是可用的。如你这个例子,Bitmap.CreatBitmap如果是在虚拟机中执行的话,那么它可能需要在虚拟机中分配内存,拷贝,然后再调用native方法,最后写到framebuffer。而如果直接用native方法的话,虽然少掉了从虚拟机到native这步开销,但也快不到哪去。而用cocos 2d的话,用opengl,载入纹理后,你的裁切,生成,这些都是在显卡中装配,渲染的,速度当然快了很多倍了
      

  5.   


    网上找了一个是apk的文件,这东西怎么用啊?
      

  6.   

    这玩意是iphone上做2D游戏的框架,android版是它的移植,包括java版和cpp版 不过cpp版貌似有些不兼容
    文档的话你可以搜一下,很多人用这个的