`
love19820823
  • 浏览: 974298 次
文章分类
社区版块
存档分类
最新评论

关于LGame中的LTextureList

 
阅读更多

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文件大约每周更新一次,上次更新是三天前)。

分享到:
评论

相关推荐

    Android-LGame中文文档去水印有书签班

    - `onMain()`:必须在 LGameAndroid2DActivity 子类中实现的抽象函数,用于完成 LGame 引擎的初始化。通常用于横竖屏设定、调节界面尺寸、设定 Admob 广告信息等。 - `maxScreen(int w, int h)`:设定游戏窗体大小...

    LGame连连看

    在“LGame连连看”中,OpenGLES被用来创建游戏的视觉效果,包括连连看棋盘的绘制、动画效果以及游戏元素的交互。 游戏的核心逻辑是连连看的匹配算法。连连看的规则简单但实现起来并不轻松。游戏开始时,棋盘上随机...

    LGame SRPG扩展包API

    LGame SRPG扩展包中的`Skill`类代表了游戏中的各种技能,包含了技能效果、消耗、冷却时间等属性。开发者可以通过继承`Skill`类并重写相关方法来自定义技能的行为。 4. 事件处理:LGame SRPG扩展包提供了丰富的事件...

    LGame游戏引擎0.32

    在0.32版本中,它提供了丰富的功能和优化,使得开发者能够快速构建2D游戏。这个版本包含了LGame的开发文档、源码和其他必要的依赖库,为开发者提供了全面的开发环境。 1. **LGame核心特性** - **跨平台支持**:...

    Lgame安卓小游戏实例和源码

    在实例部分,压缩包中可能包含了一些已经开发完成的游戏示例,这些实例是学习Lgame的宝贵资源。通过分析和运行这些实例,开发者可以直观地了解Lgame的工作原理和编程模式,从而快速上手。实例代码通常会涵盖游戏初始...

    LGame源码part4

    LGame源码part4

    LGame-LGame-0.5-Beta-fix1.zip

    LGame-LGame-0.5-Beta-fix1.zip是该引擎的0.5 Beta版本的修复更新,针对上一版本中可能存在的问题进行了优化和修正。本文将深入探讨这个版本中的核心知识点,帮助开发者更好地理解和利用LGame进行游戏开发。 1. **...

    LGame含标签最新说明文档0.4.1

    LGame的中文说明文档提供了针对0.4.1版本的详细说明和教程,文档中包含了对LGame包结构的介绍,以及对类和函数的作用与功能的逐一讲解。文档中提到的内容目前可能不是全部可信,因此开发者在使用时需要注意结合官方...

    Android代码-LGame-0.3.zip

    1. **库文件**:这些可能是LGame框架的jar或aar文件,开发者需要将它们添加到Android项目的依赖中,以便在项目中使用LGame的功能。 2. **示例代码**:可能包含一些示例游戏或教程代码,供初学者了解如何使用LGame...

    LGame-0.2.9.rar_LGAME 2.9_LGame_LGame-Android-0.2.9_eclipse lgam

    5. **Eclipse集成**:对于使用Eclipse作为开发工具的开发者,"eclipse_lgame"标签表明这个资源包包含了与Eclipse集成的必要配置,使开发者能够在熟悉的环境中进行LGame项目开发。 在“LGame-0.2.9”压缩包中,你...

    Android飞机游戏(基于LGame引擎)

    在这个基于LGame的飞机游戏中,我们可以看到如何通过LGame提供的图形渲染、事件处理和物理模拟等功能,构建出一款完整的交互式游戏。 首先,游戏的核心是游戏循环(Game Loop),这是LGame引擎的基础。游戏循环负责...

    LGAME引擎android开发工具

    2. **物理引擎**:游戏中的物体运动、碰撞检测等物理行为可能由LGAME内置的物理引擎处理,使游戏更接近真实世界,提高玩家的沉浸感。 3. **音频管理**:引擎可能包含对音频文件的支持,如背景音乐和音效的播放,...

    【LGame学堂003.第三章】 HelloWorld之绘制文本 附件下载

    在这个章节中,我们将深入学习LGame的基本使用方法,特别是关于在屏幕上显示文本的部分。 LGame入门学习首先需要理解其基本架构。LGame基于Java语言,提供了一个简洁的API,用于处理游戏的图形、音频和输入事件。在...

    LGame游戏引擎

    资源管理是游戏开发中的重要一环,LGame引擎提供了方便的资源加载和卸载机制,帮助开发者高效地管理游戏资源,避免内存泄漏和资源浪费。 总之,LGame游戏引擎以其轻量级、易用性和跨平台性,为Java游戏开发者提供了...

    Android游戏开发框架-LGame_0.2.7

    尽管在早期版本中,LGame可能缺乏详细的官方文档,但从描述中我们可以得知,开发者计划在未来发布相关的文档资料,以帮助更多的开发者理解和使用这个框架。 LGame的核心特性包括: 1. **轻量级**:LGame设计为轻量...

    LGame游戏引擎 中文使用文档(超详细公司内部开发文档)

    LGame集成了物理模拟功能,支持碰撞检测、刚体动力学等特性,使得游戏中的物体行为更加逼真。 **4. 重力感应** LGame利用设备内置的传感器来模拟重力效果,增加游戏的互动性和趣味性。这种功能特别适合于需要玩家...

    lgame游戏引擎最新3.5

    标准LGame包由于使用OpenGL编程,在不同屏幕手机中进行缩放时,可以较为有效的减少甚至消除画面失真,而LSE与LAE包则难以避免这种现象的产生(特别是大画面的游戏,在较小屏幕的手机上运行时)。

    Android-LGame框架实例

    在提供的"examples"文件夹中,包含了各种类型的LGame游戏实例,如平台跳跃游戏、拼图游戏、飞行射击游戏等。这些实例可以帮助开发者快速上手,理解LGame的基本使用方式。通过分析这些代码,我们可以看到如何初始化...

    LGame-0.2.8.zip_Java 8_LGame_android lgame.src_eclipse LGAME src

    在LGame-0.2.8.zip压缩包中,包含了丰富的资源和源代码,便于开发者深入了解和定制引擎功能。 压缩包中的文件如下: 1. **LICENSE**:这是LGame的授权协议文件,详细规定了用户可以如何使用、修改和分发LGame的源...

    【LGame学堂008.控件篇】简单控件之LButton 源码

    在LGame这个开源游戏框架中,控件是构建用户界面(UI)的重要组成部分。本篇文章将深入剖析LGame学堂第八课中的主题——LButton,一个基本的按钮控件。通过分析LButton的源码,我们可以更深刻地理解LGame的UI设计...

Global site tag (gtag.js) - Google Analytics