在游戏过程过程中,常常需要对某些数据进行保存,以确保下次运行时能够正确读取。如游戏中的金币、道具、游戏分数、已通过的关卡等。

Libgdx中常用的数据保存方式有Preferences和XmlReader。

1. Perferences

Preferences常用来保存一些较短的、使用较频繁的值。

put存入值,存完之后需要flush。

实例:

         Preferences preferences = Gdx.app.getPreferences( "pre1.test" );
preferences.putString( "name", "Kitty" );
preferences.putBoolean( "visible", true );
preferences.putInteger( "age", );
preferences.flush(); String strName1 = preferences.getString( "name" );
boolean isVisible = preferences.getBoolean( "visible" );
int age1 = preferences.getInteger( "age" );

2. XmlReader

XmlReader能够读取xml文件,不过此时只能读取,不能写入。

使用Element.get()获取child或者元素的值,示例:

         try{
XmlReader xmlReader = new XmlReader( );
Element eleRoot = xmlReader.parse( Gdx.files.internal( "xml/1.xml" ) );
Element eleStu = eleRoot.getChildByName( "student" ); String strName2 = eleStu.get( "name" );
boolean isMale = eleStu.getBoolean( "male" );
int age2 = eleStu.getInt( "age" );
strShow2 = strName2 + " " + isMale + " " + age2;
}
catch(IOException e){
e.printStackTrace();
}

3. XmlWriter

XmlWriter能够将Xml的值写入到StringWriter中,然后写入到xml文件中进行保存。

其中.enimate()方法创建子元素,.text()方法插入元素值,.attribute()方法插入元素属性。

示例:

         try{
stringWriter = new StringWriter();
//stringWriter.append( "" );
XmlWriter xmlWriter = new XmlWriter( stringWriter );
xmlWriter.element("information")
.element( "person" ).attribute( "id", "0201" )
.element("name").text("Nacy").pop()
.element("hobby").text("basketball").pop()
.element("age").text("34").pop()
.pop()
.pop();
xmlWriter.close();
FileHandle file = Gdx.files.local( "set.xml" );
file.writeString( stringWriter.toString(), false );
System.out.println( stringWriter.toString() );
}
catch(IOException e){
e.printStackTrace();
}

完整代码:

 package com.fxb.newtest;

 import java.io.IOException;
import java.io.InputStream;
import java.io.StringWriter; import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Preferences;
import com.badlogic.gdx.files.FileHandle;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.utils.XmlReader;
import com.badlogic.gdx.utils.XmlReader.Element;
import com.badlogic.gdx.utils.XmlWriter; public class Lib013_XmlReader1 extends ApplicationAdapter{ //XmlReader reader;
//Element element;
BitmapFont font;
String strShow1, strShow2;
SpriteBatch batch;
StringWriter stringWriter;
String configFileName = "xml/3.xml"; @Override
public void create() {
// TODO Auto-generated method stub
super.create(); font = new BitmapFont();
font.setColor( Color.BLACK );
batch = new SpriteBatch(); Preferences preferences = Gdx.app.getPreferences( "pre1.test" );
preferences.putString( "name", "Kitty" );
preferences.putBoolean( "visible", true );
preferences.putInteger( "age", 25 );
preferences.flush(); String strName1 = preferences.getString( "name" );
boolean isVisible = preferences.getBoolean( "visible" );
int age1 = preferences.getInteger( "age" );
strShow1 = strName1 + " " + isVisible + " " + age1; try{
XmlReader xmlReader = new XmlReader( );
Element eleRoot = xmlReader.parse( Gdx.files.internal( "xml/1.xml" ) );
Element eleStu = eleRoot.getChildByName( "student" ); String strName2 = eleStu.get( "name" );
boolean isMale = eleStu.getBoolean( "male" );
int age2 = eleStu.getInt( "age" );
strShow2 = strName2 + " " + isMale + " " + age2;
}
catch(IOException e){
e.printStackTrace();
} try{
stringWriter = new StringWriter();
//stringWriter.append( "" );
XmlWriter xmlWriter = new XmlWriter( stringWriter );
xmlWriter.element("information")
.element( "person" ).attribute( "id", "0201" )
.element("name").text("Nacy").pop()
.element("hobby").text("basketball").pop()
.element("age").text("34").pop()
.pop()
.pop();
xmlWriter.close();
FileHandle file = Gdx.files.local( "set.xml" );
file.writeString( stringWriter.toString(), false );
System.out.println( stringWriter.toString() );
}
catch(IOException e){
e.printStackTrace();
} } @Override
public void render() {
// TODO Auto-generated method stub
super.render();
Gdx.gl.glClearColor( 1, 1, 1, 1 );
Gdx.gl.glClear( GL10.GL_COLOR_BUFFER_BIT ); batch.begin();
font.draw( batch, strShow1, 100, 150 );
font.draw( batch, strShow2, 100, 100 );
font.drawMultiLine( batch, stringWriter.toString(), 100, 300 );
batch.end(); } @Override
public void dispose() {
// TODO Auto-generated method stub
super.dispose();
} }

运行结果:

Libgdx学习记录14——数据保存Preferences,XmlReader的更多相关文章

  1. 【学习记录】C#保存数据至CSV文档 & DateTime格式模式控制解释

    数据类的定义: public class Result_Display { private string id; public string ID { get { return id; } set { ...

  2. oracle学习之数据库数据保存成文件

    常常需要将数据库中的数据生成文档,由于比较喜欢脚本的方式,所以就需要使用spool的时候进行格式设置,以下简单整理了一下oracle中进行格式设置的一些东西,一共十八条,其实常用的也就那么几个,稍后会 ...

  3. 学习记录 java session保存用户登录

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  4. libgdx学习记录2——文字显示BitmapFont

    libgdx对中文支持不是太好,主要通过Hireo和ttf字库两种方式实现.本文简单介绍最基本的bitmapfont的用法. 代码如下: package com.fxb.newtest; import ...

  5. libgdx学习记录3——动画Animation

    libgdx动画采用Animation实现,即通过帧动画实现. 代码如下: package com.fxb.newtest; import com.badlogic.gdx.ApplicationAd ...

  6. libgdx学习记录26——Polygon多边形碰撞检测

    libgdx中Math封装了Polygon这个类,它是由多个定点进行描述实现的,在进行物体间的碰撞时,物体轮廓有时候是不规则的,这时候可以用一个多边形勾勒出其大概的轮廓,对其进行模拟. Polygon ...

  7. libgdx学习记录22——3d物体创建

    libgdx是一个强大的游戏框架,不仅支持2d部分,同时还支持3d部分. libgdx的3d部分投影主要通过PerspectiveCamera实现. 物体的显示过程: 1. 创建远景相机,角度一般设为 ...

  8. libgdx学习记录20——多线程MultiThread资源处理

    在libgdx中,一般的逻辑流程都在rende()函数中执行,这个函数是由opengl的渲染线程调用的,一般的图形显示和逻辑处理都在这个线程中. 一般情形下,在这个线程中处理就行了.但是当某些逻辑处理 ...

  9. libgdx学习记录19——图片动态打包PixmapPacker

    libgdx中,opengl 1.x要求图片长宽必须为2的整次幂,一般有如下解决方法 1. 将opengl 1.x改为opengl 2.0.(libgdx 1.0版本后不支持1.x,当然不存在这个问题 ...

随机推荐

  1. apache web服务器安全配置

    尽管现在购买的云服务器很多都有一键web环境安装包,但是如果是自己配置web环境则需要对各种安全配置十分了解,今天我们就来尝试这做好web服务器安全配置.这里的配置不尽完善,若有纰漏之处还望指出. 修 ...

  2. AForge.NET简介

    AForge.NET是一个专门为开发者和研究者基于C#框架设计的,这个框架提供了不同的类库和关于类库的资源,还有很多应用程序例子,包括计算机视觉与人工智能,图像处理,神经网络,遗传算法,机器学习,机器 ...

  3. android dev概念快速入门

    apk: android将源代码依赖库等经过编译后打包分发的应用. 打包详细过程如下: android-studio安装 由于google被qiang,需要制定proxy,可以使用sock,同时安装完 ...

  4. sqlserver 跨服务器备份表

    exec sp_configure 'show advanced options',1 reconfigure exec sp_configure 'Ad Hoc Distributed Querie ...

  5. MySQL查询计划 key_len计算方法

    本文首先介绍了MySQL的查询计划中ken_len的含义:然后介绍了key_len的计算方法:最后通过一个伪造的例子,来说明如何通过key_len来查看联合索引有多少列被使用. key_len的含义 ...

  6. 基于esky实现python应用的自动升级

    一.esky介绍 Esky is an auto-update framework for frozen Python applications. It provides a simple API t ...

  7. Eclipse无法自动编译生成class文件

    在Maven项目中,通常eclipse生成的class文件都会在target/classes文件夹下,但是有时候由于各种原因,classes下没有生成class文件,导致项目启动失败 . 大部分cla ...

  8. Windows server 安装和配置zabbix agent

    1.下载Windows 平台的zabbix agent 先到官网下载zabbix_agentd监控客户端软件安装包(windows操作系统客户端),客户端版本尽量与服务器版本一致,下载地址:http: ...

  9. 解决:Host xxx.xxx.xxx.xxx is blocked because of many connection errors.

    Host "xxx.xxx.xxx.xxx" is blocked because of many connection errors 1.原因:当使用错误的密码连接mysql时, ...

  10. chrome历史记录,浏览记录,全选问题.

    一句话, 这个列表支持SHIFT多选 =,=!