LGame性能改进,并增加TMX地图支持(0 2 96版)
下载地址(内含源码、示例、jar):http://loon-simple.googlecode.com/files/LGame-Android-0.2.96.7z
本次更新主要针对LGame与Android系统组件交互部分进行改进,简化了流程与代码,同时调整了LGame运行在不同环境运行时的显示策略,解决了以往存在的大多数真机差异问题,以尽量满足不同手机平台的需求。
主要改进如下:
1、新增Touch类,用以替代Android系统默认的MotionEvent类(为了封装自适屏坐标切换),所有触屏参数自0.2.96起改为由此类传递。
2、删除旧有的SpriteTile类,改为使用标准TMX地图,相关封装在org.loon.framework.android.game.action.map.tmx包下。
基本使用方法如下所示,更详细可见源码部分或等待0.3版发布时文档。
TMXTiledMap map; public void onLoad() { //加载TMX地图,XML中图片加载路径在assets文件夹下 map = new TMXTiledMap("assets/desert.tmx","assets"); } public void draw(LGraphics g) { //当onLoad中资源全部加载完毕时 if (isOnLoadComplete()) { //绘制TMX地图到屏幕,由TMX坐标的1,5位置开始显示(换算为像素坐标就是1*tileWidth,5*tileHeight) map.draw(g,1,5); } }
效果图:
3、新增Mode类,用以管理LGame引擎所开发游戏的显示模式。
自LGame-0.2.96起,我们可以先用maxScreen函数创建一个480x320之类低分辨率的窗口,而后通过initialization(true,Mode.Fill)(参数中true代表横屏,false代表竖屏)方式让它以全屏状态运行在800x480等较高分辨率的手机之上,调用此函数所产生的窗体完全不需修改其它部分,坐标与画面比例都将自动切换(当然,缩放的代价是画面与速度的损耗无法避免)。
4、不再强制绑定Admob类库,原有调用方式改为手动调用封装好的AdUtils类。
需要注意的是,此封装类仅处理AdView相关部分封装,超出AdView权限的部分不再处理。做如此变更的主要原因在于,最新版的Admob类库会依赖新增的AdMobActivity类,硬编码处理隐患太多,故此交还权限给用户(另一个原因是Admob类库越来越大,如果不用Admob还带着它APK在体积上吃亏(- -|||)),使用Admob类库时请按Admob示例中格式自行配置AndroidManifest.xml文件即可,和普通程序没有任何区别。(用AdUtils封装的话配置AndroidManifest.xml就够了,不用的话请完全照搬Admob示例中代码)
基本使用方法如下所示:
public class Main extends LGameAndroid2DActivity { public void onMain() { this.initialization(true); if(AdUtils.isAdJarExist()){ AdUtils.createAdView(this, Location.RIGHT,"Android game", 30); } this.setShowLogo(true); this.setShowFPS(true); this.setScreen(new TD()); this.showScreen(); }}
效果图:
5、不再强制用户必须使用LGameAndroid2DActivity。
虽然个人并不主张同时创建多个Activity达到画面转换的效果(太耗资源),但假如您一定要使用此方式的话,自0.2.96版起可以在LGame初始化时设置setDestroy(false)函数,这样就可以让程序在注销LGameAndroid2DActivity时不退出游戏,从而把LGameAndroid2DActivity当作一个非常普通的Activity使用。
6、简化了LGame与标准Android组件交互时的编码流程,让Android窗体添加方式更贴近于LGame自带组件的添加方式。
自0.2.96版起,当我们想加载一个规定大小的Web界面到LGame的指定位置,可以直接使用以下编码做到:
//构建LGameWeb(其实就是WebView的简单封装,直接用WebView或其它任何View操作方式完全一致,另外用removeView可以删除)LGameWeb web = new LGameWeb("www.baidu.com");//PS:读取XML文件的话,将web处直接替换为LSystem.getActivity().findViewById(id)即可 ,在LGameAndroid2DActivity和//Screen中都有addView函数。另外View是一个泛指的概念,因为ViewGroup继承View,而Android中所有Layout都继承自ViewGr//oup,所以无论是View或Layout都可以注入该函数。//添加LGameWeb到游戏窗体当中,大小设定为320x240,位置居于屏幕中心(Location已改良,可设定所有相对位置)addView(web, 320, 240,Location.CENTER);
效果如下图所示:
全屏的话改为这样既可。
addView(web, LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT,Location.CENTER);
效果如下图所示:
另外,由于Android系统自身的特殊线程机制,如果在多线程环境中使用addView添加组件或者进行其它Android系统组件操作(比如LGame的onLoad等函数中调用),需要使用runOnUiThread将其包装,具体代码如下所示:
LSystem.runOnUiThread(new Runnable() { public void run() { LGameWeb web = new LGameWeb("www.baidu.com"); addView(web, LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT, Location.CENTER); }});
最后,网络操作必须开启 <uses-permission android:name="android.permission.INTERNET" />
PS:举凡编程,都是先有标准的构建方式,再有XML配置方式,所以只要能进行Activity加载,就肯定能正常读取和加载Android的XML文档。更何况LGame引擎从本质上说就是一个Android图形系统的封装马甲,绝不可能穿上马甲就不能以默认方式编程了。如果您看不惯LGame的组件调用方式,大可以该怎么写就怎么写,操作上完全一致。
7、改良了AndroidDialog调用方式,让其使用更简便。
调用选择框:
public void onTouchDown(Touch e) { showAndroidSelect(new SelectListener() { public void item(int index) { Log.i("Select", "item:" + index); } public void cancled() { } }, "选择框", new String[] { "1", "2", "3" }); }
调用输入框:
public void onTouchDown(Touch e) { showAndroidTextInput(new TextListener() { public void input(String text) { } public void cancled() { } }, "输入框", "ABCDEFG"); }
调用一个Assets文件夹下的HTML文档:
public void onTouchDown(Touch e) {showAndroidOpenHTML(new ClickListener() { public void clicked() { } public void cancled() { }},"TEST", "test.html");}
其它不一一例举,总之所有的Dialog都可以正常调用(用Android系统默认的调用方式也一样)。
下载地址(内含源码、示例、jar):http://loon-simple.googlecode.com/files/LGame-Android-0.2.96.7z
————————————————
0.3版的SLG模块有速度问题(在JavaSE版就没事,郁闷),所以0.3预计延后一到两周发布,先发个0.2.96版劳烦大家帮小弟找找BUG(另外一点,无法发布0.3的更重要原因在于,小弟最近脖子落枕了(-_-))……
LGame性能改进,并增加TMX地图支持(0 2 96版)相关推荐
- 图吧地图(V5.0公测版) 高清地图今日公测
图吧地图(V5.0公测版) 高清地图今日公测 软件简介:图吧官方网站 [http://www.mapbar.com] 图吧-首批甲级电子地图资质+专注地图导航服务的老牌+HTC/LG等大厂认证预装.惊 ...
- vue使用百度地图3.0,使用JavaScriptAPI版,聚合点,个性化地图切换卫星地图
为什么用JavaScript版,因为用vue的百度map有问题,地图显示不全,之前还以为是我的问题,结果去了官网发现官网的地图都是显示不全,也不知道咋回事,不知道现在修好了没,所以只好用JavaScr ...
- 【翻译】.NET 5中的性能改进
[翻译].NET 5中的性能改进 在.NET Core之前的版本中,其实已经在博客中介绍了在该版本中发现的重大性能改进. 从.NET Core 2.0到.NET Core 2.1到.NET Core ...
- 百度地图android室内定位,百度地图4.0正式发布,主打免费语音导航、室内定位、实时公交和生活搜索 (视频)...
自2010年10月百度地图在塞班平台上线了第一个版本以后,陆续登陆了Android和iPhone平台,据百度地图团队介绍,其最新的用户数已达7000万.今天,百度地图4.0 正式发布(iPhone版 ...
- HTTP/3: 性能改进(第2部分)
原文链接:https://www.smashingmagazine.com/2021/08/http3-performance-improvements-part2/ 作者亲自操刀的系列文章,英文的, ...
- Qt 5.12 LTS(长期维护版本)中Qt Quick的性能改进
我们一直致力于提高Qt的性能和优化其内存消耗.Qt 5.12的一个重点关注是在于减少QML引擎的内存消耗和优化JavaScript性能. 与上一个长期支持版Qt 5.6 LTS相比,Qt 5.9 LT ...
- .NET 5 中的正则引擎性能改进(翻译)
前言 System.Text.RegularExpressions 命名空间已经在 .NET 中使用了多年,一直追溯到 .NET Framework 1.1.它在 .NET 实施本身的数百个位置中使用 ...
- drools dmn_Drools DMN最新开源引擎性能改进
drools dmn 我们一直在寻求改善Drools DMN开源引擎的性能. 我们最近审查了DMN用例,其中输入数据节点的实际输入总体有所不同. 这突出显示了引擎的次佳性能,我们在最新版本中对此进行了 ...
- Drools DMN最新开源引擎性能改进
我们一直在寻求改善Drools DMN开源引擎的性能. 我们最近审查了DMN用例,其中输入数据节点的实际输入总体有所不同. 这突出显示了引擎的次佳性能,我们在最新版本中对此进行了改进. 我想分享我们的 ...
最新文章
- java怎么建立内部类_语法 - 是否可以在Java静态中创建匿名内部类?
- 面试必备:一个秒杀系统的设计思考
- 【F#2.0系列】概述
- ArrayList、LinkedList和Vector
- mysql常用日期时间函数_MySql常用日期时间函数
- 在行列都排好序的矩阵中找数
- sudoers 用户权限配置_Linux 用户注意!针对Sudo 被曝漏洞,厂商已发布最新版本...
- 服务器系统与普通系统不同,服务器系统与普通系统区别
- avr-gcc中关于delay延时函数的应用修改版[ourdev]
- 计算机管理要继续请输入,若要继续,请键入管理员密码然后单击是问题解决方法...
- 15-07-08 数组-- 投票选班长
- [USACO08NOV]时间管理Time Management
- Liist Object ? 获取方式
- python交换两个值原理_python交换两个变量的值方法
- 矩阵分析与应用-13-矩阵的迹
- JAVA NIO 实现群聊
- 爬取奇迹秀工具箱里面的文本和软件网盘链接
- Redis配置文件所在位置
- 新浪微博批量删除微博的方法
- 模型压缩文献笔记_3:彩票假设及其家属。
热门文章
- error: insufficient permissions for device
- 基于Java+Swing实现愤怒的小鸟游戏
- Windows11修改文件后缀名的方法
- 揭发百分百垃圾软件,骗子不得好死!
- 执法仪app音视频相关
- SDK_17.1.0 nrf52832 串口透传(NUS)增加DFU功能OTA
- 微软商店账户登录一直转圈_微软Xbox游戏栏崩溃 出现错误代码0x803F8001
- UAF (Use After Free)漏洞分析及利用
- 微型计算机2017年2月,2018年1-2月份规模以上工业增加值增长7.2%
- python 招聘 广州_python爬虫 智联招聘 工作地点