libgdx开发各种记录,对客户端开发一窍不通:

1.发现libgdx开发的游戏场景有内存泄露的情况,一开始以为是某些性能问题.但是没有仔细查找原因.

后来打开jvirtualvm,查看什么对象在不停的增长.结果发现Texture 在不停的被创建.说明有地方在不停的加载贴图资源? 想不出什么原因.然后通过排除法一个stage 一个actor 的排除.最终定位在一个 "血条"的actor实现上.

不会画血条,代码是从网上copy的.

public void draw(SpriteBatch batch, float parentAlpha) {Pixmap pixmap = new Pixmap(64, 8, Format.RGBA8888); //生成一张64*8的图片
pixmap.setColor(Color.BLACK); //设置颜色为黑色
pixmap.drawRectangle(0, 0, titleWidth, pixHeight); //绘制边框
Texture pixmaptex = new Texture(pixmap); //生成图片
TextureRegion pix = new TextureRegion(pixmaptex, titleWidth, pixHeight); //切割图片
batch.draw(pix, this.getX(), this.getY() + this.titleHeight+ this.margin); //绘制}

这里每帧都创建一次Texture 并且没有销毁.  不应该每帧都 进行一次这种逻辑.而是血量发生变化才create Texture. 客户端开发应该注意这种问题.

2.我喜欢用arrayList,而libgdx大量的运用了自己实现的 Array.看了下注释.是说删除的时候如果不需要保持顺序能避免内存拷贝. 对于需要对list进行添加 删除的地方能起到一个优化作用.

3.显示FPS

   @Overridepublic void act() {super.act();fpsLabel.setText("FPS:"+ Gdx.graphics.getFramesPerSecond());}

fps本身就是每帧就要刷新一次.写法倒是没问题.但是出于上面问题1的忧虑.我看了下 setText方法.结果发现在这里作者有一个优化过程:

public void setText (CharSequence newText) {if (newText instanceof StringBuilder) {if (text.equals(newText)) return;text.setLength(0);text.append((StringBuilder)newText);} else {if (newText == null) newText = "";if (textEquals(newText)) return;text.setLength(0);text.append(newText);}invalidateHierarchy();}

如果是StringBuilder对象则直接比较是否需要重新绘制.对比普通的CharSequence 比较方法有一个优化的提升.

4.中文问题

输入中文问题还没处理过,中文文件名.文件中文字符问题 有一些重写方法.

作者的一些读取文件方法采用的是ISO-8859-1 编码. 所以该重写就重写. 中文文件名 android直接不支持 .所以不要取中文的文件夹和的名称

5.读取文件夹问题.

很多人可能没这个必要.但是如果你的资源文件很多.例如一个文件夹里面有一堆的音频文件.

办法A,在代码里面一个名字一个名字的写读取方法.

办法B,读取文件夹.然后listFiles().

选择方法B的时候,你就会遇到一个读取文件夹问题.android里面读取文件夹 list()方法会返回空数组.读不到子文件夹列表.但是把文件夹读取会得到一个子文件名的字符串.然后通过分割来知道文件夹内有哪些文件.

在桌面程序导出为jar则不能读取文件夹.经过不懈的努力.我发现把文件夹放在jar同级目录.然后通过

Gdx.files.local 可以顺利读取.

6.int与float

客户端最好用浮点数计算.因为会产生微小的变化而被int给约去.遇到一个奇怪的问题,计算与预期有偏差.不过很快就排查出来是int类型约去的小数点.

7.api问题.

作者提供了部分api,最好都看看

例如

   static public final int random (int range) {return random.nextInt(range + 1);}

这个就是产生 0-n 而不是0-n-1的随机数.

8.该重写的就重写

例如TmxMapLoader 不支持ImageLayer

TextureAtlas不支持根据名字前缀查找.就重写实现.

9.字体问题.

字体问题没搞明白 字体大小和颜色问题.BitmapFont 应该算是一个普通图片来显示对应文字.

libgdx开发记录相关推荐

  1. Anytime项目开发记录0

    Anytime,中文名:我很忙. 开发者:孤独的猫咪神. 这个项目会持续更新,直到我决定不再维护这个APP. 2014年3月10日:近日有事,暂时断更.希望可以会尽快完事. 2014年3月27日:很抱 ...

  2. CozyRSS开发记录3-标题栏再加强

    CozyRSS开发记录3-标题栏再加强 1.更精炼的标题栏 接下来,我们把窗口的边框和默认的标题栏给去掉,让Cozy看起来更像一个平板应用. 在主窗口的属性里,修改下列两个属性: 效果一目了然: 2. ...

  3. CozyRSS开发记录19-窗口标题栏交互

    CozyRSS开发记录19-窗口标题栏交互 1.谈谈对mvvm解耦的看法 在使用mvvm时,如何操作窗口,这是一个问题.这个问题的关键点是:mvvm是把view和viewmodel解耦了的,很多写法一 ...

  4. TMS320F28335项目开发记录9_28335之中断系统

    TMS320F28335项目开发记录9_28335之中断系统 2014年11月08日 12:00:12 阅读数:3104 28335中断系统 1.中断系统 在这里我们要十分清楚DSP的中断系统.C28 ...

  5. 转:修改Content Server管理员密码 - [Documentum 实施开发记录]

    修改Content Server管理员密码 - [Documentum 实施开发记录] 2010-02-25 Tag: 版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明 http:// ...

  6. CozyRSS开发记录8-解析一份RSS

    CozyRSS开发记录8-解析一份RSS 1.使用Rss20FeedFormatter解析RSS 使用Rss20FeedFormatter配合XmlReader来解析RSS非常的简单,几行搞定: 来试 ...

  7. 前端radio单选框默认选中_开发记录篇前端内容1

    有段时间没有更新文章了,因为是用的公司电脑,没有虚拟机,所以就没法演示hadoop相关的东西了,而且大数据篇的东西需要花费一些时间和精力去收集整理内容,那大数据篇就先暂停一下.最近这段时间的话我可能会 ...

  8. DTS开发记录(5)-- 挑战增量导出

    增量导出恐怕是DTS系统中最艰难的部分了,我们曾考虑过很多方案,最后都因为需要表大纲做一定的假设而不具备通用性而放弃.有很多效率较高的方案,由于为了追求通用性而无法实现,因为现实的情况比我们理想的要复 ...

  9. 五.开发记录之ubuntu系统安装各个软件

    专栏系列文章如下: 一.开发记录之AHRS.惯导传感器SBG-Ellipse-N传感器配置和使用_goldqiu的博客-CSDN博客_sbg传感器数据格式 二.开发记录之派勤工控机远程使用和ubunt ...

最新文章

  1. HDU3037(卢卡斯定理)
  2. 内存条上面参数详解_为什么买内存条要看时序?别以为内存频率高性能就好
  3. 怎么将翼型导入catia_CATIA导入翼型出现了问题,翼型是在网上找的。说是样条线运算有问题 - 机械 - 小木虫 - 学术 科研 互动社区...
  4. windows定时任务
  5. jmeter跨线程组传多个值_jmeter多用户登录跨线程组操作传值
  6. 数据库优化之mysql【转】
  7. 帝国7.5标签+在PHP7.0,帝国CMS7.5支持PHP7.*系列,兼容性更好
  8. Centos6.7 简单搭建dns服务器
  9. 机顶盒天线接头怎么接_户户通天线怎么安装图解
  10. 打印程序在计算机上的应用程序,无法打印显示打印机程序服务没有运行解决办法...
  11. android 动画-补间动画
  12. 1.机器学习入门-初学者的机器学习
  13. 您计算机处于状态或者您计算机时钟设置,您的Windows 10时间不正确? 这是如何固定时钟 | MOS86...
  14. 【科学常识】之《马太效应》
  15. 【实战篇】37 # 如何使用 QCharts 图表库绘制常用数据图表?
  16. 目标Zookeeper未授权访问(漏洞验证)
  17. 一年三轮融资3亿 深睿医疗领跑AI医疗行业
  18. 何谓云原生?如何走近云原生?
  19. Scapy用法官方文档
  20. 不执著才叫看破,不完美才叫人生。

热门文章

  1. Win10 安装node.js
  2. RunApi在发送请求的时候添加Token
  3. 网络兼容性是什么意思
  4. java+selenium简单使用给斗鱼主播刷弹幕-.-
  5. 关于Android 8.0/9.0 之后获取wifi名称为空的解决方法
  6. 什么时候找客户聊天才是最佳时间呢?
  7. pycharm中couldn‘t upload helpers for remote
  8. 【论】Strategic sourcing selection for bike-sharing rebalancing: An evolutionary game approach
  9. GB/T18655-2010标准下的动力电池系统及其BMS电磁EMC测试
  10. 自适应模糊PID在反应釜温度控制中的应用