LTextureList,是一个与前例介绍的LTexturePack形似而神异的不同存在。两者的差异在于:LTexturePack专注于“分散纹理的统一管理,会将注入当中的所有小图合并为一”。LTextureList专注于“分散纹理的分散管理,会保留所有小图的引用而分别调用”。事实上,由于Android中提供个单独程序的图像空间非常有限,无论怎么有效释放,Bitmap都不能同时存在太多。而LTextureList就是专为处理海量图片所准备的,在配置了相关xml文档后,LTextureList将仅在执行对应名称纹理的loadTexture时,才会加载LTexture(也就是所谓的“惰性加载”)。而不会一次性加载完毕,且加载一次后会立即产生缓存,只要不注销资源,即使再次loadTexture也不会重复加载。因此,即使您在xml中填入几万张图片地址也无所谓,完全不必担心实时加载所带来的程序瘫痪。LTextureList最简单的用法莫过于此:
images.xml配置:对应的java配置如下:
运行上述程序后,我们会得到如下显示画面:

此时,如果有一些基本的图像变动,也不需再修改任何程序代码,仅微调xml参数即可,比如,当我们需要hero去掉黑底时,只要进行如下设置:
这时,我们在image元素中,加入了<mask r="0" g="0" b="0" />一行,即过滤掉0,0,0像素,这时我们再次执行程序,画面将变为如下所示。

怎么样,大家发现变化了没有?原来【hero系列】的黑底,是否已经消失不见了呢?可惜,这样依旧是一组连续的图片,这样的“英雄连”我们还无法直接在游戏中使用,所以,我们要继续修改xml设置,直到生成的纹理被用户能够接受为止。
这次,增加了x="0" y="0" w="24" h="24"这样一行文字,并且添加有scale="2"。这是干什么用的呢?其实在上例讲到LTexturePack时,小弟已经做过了类似的事情,不过是告知系统从一整张图片的x=0,y=0处开始取图,一直取到w=24,h=24处停止罢了(也就是第一个“士兵”的图片位置)。不过这里有处与LTexturePack明显的差别,既LTexturePack中所取得的小图是系统从一整张大纹理中“虚拟”出来的,不会消耗任何额外的内存或显存空间,而LTextureList所取出的小图,对系统而言可是真实纹理,显存中实际存在的一张图像。

当然,LTextureList也可以单纯作为图像List使用,设定统一的setBlendMode改变图像的混图模式,透明度等等,比如:
不过,这样就失去预设定与惰性加载的能力了。

说完了LTextureList,但这种程度的篇幅作为博文来说依旧太短了,所以小弟下面再来谈谈0.3.2中新增的几个辅助类。
关于Session类
LGame中的Session类,是为了在多Screen中传值与保存多值而设计的,RecordStore类(高仿JavaME)的再简化版本,它每次set的可以是唯一的键值对,也可以在同一键下挂多值,在执行dispose函数前,session每次save的数值都将永久保存(JavaSE版保存为本地文件,Android版保存到手机数据库)。
下面是一个非常简单的用例。


关于HttpClient类
HttpClient类是为了保证LGame应用在跨平台时接口一致而构建的,处理简单网页资源浏览的工具类,基本用法如下所示。
除了常规的网页加载外,HttpClient还可以作为下载器使用,基本用例如下所示:
效果如下所示:

__________________________
另,在LGame的SVN中,有一个小弟开发中的0.3.3测试版(内含jar及源码,loon-simple.googlecode.com/svn/trunk/),此版本与小弟目前手中的最新版本仅有个别细节处的差异(差的仅为效率问题修正),因为小弟正在集中精力搞C#版的完善与C/C++版的开发,0.3.3正式版暂时不会面世(我会将C/C++、C#、Java版都统一到0.3.3结构下,所以会多用点时间),但小弟会将一些最近的修改发往此处存底,如果大家在使用0.3.2时遇到一些问题,也可以换用0.3.3测试版实验运行,也许相关问题在此版就已经解决了(此LGame-0.3.3-test文件大约每周更新一次,上次更新是三天前)。
分享到:
相关推荐
- `onMain()`:必须在 LGameAndroid2DActivity 子类中实现的抽象函数,用于完成 LGame 引擎的初始化。通常用于横竖屏设定、调节界面尺寸、设定 Admob 广告信息等。 - `maxScreen(int w, int h)`:设定游戏窗体大小...
在“LGame连连看”中,OpenGLES被用来创建游戏的视觉效果,包括连连看棋盘的绘制、动画效果以及游戏元素的交互。 游戏的核心逻辑是连连看的匹配算法。连连看的规则简单但实现起来并不轻松。游戏开始时,棋盘上随机...
LGame SRPG扩展包中的`Skill`类代表了游戏中的各种技能,包含了技能效果、消耗、冷却时间等属性。开发者可以通过继承`Skill`类并重写相关方法来自定义技能的行为。 4. 事件处理:LGame SRPG扩展包提供了丰富的事件...
在0.32版本中,它提供了丰富的功能和优化,使得开发者能够快速构建2D游戏。这个版本包含了LGame的开发文档、源码和其他必要的依赖库,为开发者提供了全面的开发环境。 1. **LGame核心特性** - **跨平台支持**:...
在实例部分,压缩包中可能包含了一些已经开发完成的游戏示例,这些实例是学习Lgame的宝贵资源。通过分析和运行这些实例,开发者可以直观地了解Lgame的工作原理和编程模式,从而快速上手。实例代码通常会涵盖游戏初始...
LGame源码part4
LGame-LGame-0.5-Beta-fix1.zip是该引擎的0.5 Beta版本的修复更新,针对上一版本中可能存在的问题进行了优化和修正。本文将深入探讨这个版本中的核心知识点,帮助开发者更好地理解和利用LGame进行游戏开发。 1. **...
LGame的中文说明文档提供了针对0.4.1版本的详细说明和教程,文档中包含了对LGame包结构的介绍,以及对类和函数的作用与功能的逐一讲解。文档中提到的内容目前可能不是全部可信,因此开发者在使用时需要注意结合官方...
1. **库文件**:这些可能是LGame框架的jar或aar文件,开发者需要将它们添加到Android项目的依赖中,以便在项目中使用LGame的功能。 2. **示例代码**:可能包含一些示例游戏或教程代码,供初学者了解如何使用LGame...
5. **Eclipse集成**:对于使用Eclipse作为开发工具的开发者,"eclipse_lgame"标签表明这个资源包包含了与Eclipse集成的必要配置,使开发者能够在熟悉的环境中进行LGame项目开发。 在“LGame-0.2.9”压缩包中,你...
在这个基于LGame的飞机游戏中,我们可以看到如何通过LGame提供的图形渲染、事件处理和物理模拟等功能,构建出一款完整的交互式游戏。 首先,游戏的核心是游戏循环(Game Loop),这是LGame引擎的基础。游戏循环负责...
2. **物理引擎**:游戏中的物体运动、碰撞检测等物理行为可能由LGAME内置的物理引擎处理,使游戏更接近真实世界,提高玩家的沉浸感。 3. **音频管理**:引擎可能包含对音频文件的支持,如背景音乐和音效的播放,...
在这个章节中,我们将深入学习LGame的基本使用方法,特别是关于在屏幕上显示文本的部分。 LGame入门学习首先需要理解其基本架构。LGame基于Java语言,提供了一个简洁的API,用于处理游戏的图形、音频和输入事件。在...
资源管理是游戏开发中的重要一环,LGame引擎提供了方便的资源加载和卸载机制,帮助开发者高效地管理游戏资源,避免内存泄漏和资源浪费。 总之,LGame游戏引擎以其轻量级、易用性和跨平台性,为Java游戏开发者提供了...
尽管在早期版本中,LGame可能缺乏详细的官方文档,但从描述中我们可以得知,开发者计划在未来发布相关的文档资料,以帮助更多的开发者理解和使用这个框架。 LGame的核心特性包括: 1. **轻量级**:LGame设计为轻量...
LGame集成了物理模拟功能,支持碰撞检测、刚体动力学等特性,使得游戏中的物体行为更加逼真。 **4. 重力感应** LGame利用设备内置的传感器来模拟重力效果,增加游戏的互动性和趣味性。这种功能特别适合于需要玩家...
标准LGame包由于使用OpenGL编程,在不同屏幕手机中进行缩放时,可以较为有效的减少甚至消除画面失真,而LSE与LAE包则难以避免这种现象的产生(特别是大画面的游戏,在较小屏幕的手机上运行时)。
在提供的"examples"文件夹中,包含了各种类型的LGame游戏实例,如平台跳跃游戏、拼图游戏、飞行射击游戏等。这些实例可以帮助开发者快速上手,理解LGame的基本使用方式。通过分析这些代码,我们可以看到如何初始化...
在LGame-0.2.8.zip压缩包中,包含了丰富的资源和源代码,便于开发者深入了解和定制引擎功能。 压缩包中的文件如下: 1. **LICENSE**:这是LGame的授权协议文件,详细规定了用户可以如何使用、修改和分发LGame的源...
在LGame这个开源游戏框架中,控件是构建用户界面(UI)的重要组成部分。本篇文章将深入剖析LGame学堂第八课中的主题——LButton,一个基本的按钮控件。通过分析LButton的源码,我们可以更深刻地理解LGame的UI设计...