目录

前言

加载资源

libGDX资源目录说明

配置各个平台启动器

desktop模块启动器设置

Android模块启动器设置

加速度计和指南针

html模块启动器设置

编写加载资产代码

1. 加载图像资源

2. 加载音效资源


前言

在前面两章中(libGDX跨平台游戏开发框架入门:搭建开发环境和生成libGDX项目_汤姆猫不是猫的博客-CSDN博客_libgdx框架),(libGDX跨平台游戏开发框架入门:运行libGDX项目_汤姆猫不是猫的博客-CSDN博客)我们简单介绍了如何搭建libGDX开发环境和如何运行项目,以及项目中的模块作用等情况,我们对libGDX的项目有了初步认识,那么接下来我们通过一个简单的小游戏来初步了解一下libGDX中的几个重要API。

为了更加清楚的描述每个api作用,我们将使用大量的代码和描述,来阐述每个api的作用和用途,所以我们将开发小游戏分为四个部分讲解,由于篇幅限制,我们分为三章讲解各个部分主要内容,最后一篇进行汇总: 1. 加载资源 2. 渲染和清屏 3. 鼠标键盘输入和精灵移动 4. 小游戏完整版汇总篇

本篇为资源加载篇

加载资源

为了让游戏可以使用这些资源,我们必须将它们放在 Androidassets文件夹中。我将这4 个文件命名为:drop.wav、rain.mp3、droplet.png和bucket.png并将它们放入android/assets/. 我们只需要存储一次资源,因为桌面和 HTML5 项目都被配置为通过不同的方式“查看”这个文件夹。

libGDX资源目录说明

在没有安卓平台上开发时,assets目录在core目录中,如果包含Android项目,那么所有资源都会放在Android项目的assets目录中,并共享给其他模块使用。

配置各个平台启动器

desktop模块启动器设置

```java

package com.badlogic.drop.desktop;import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration;
import com.badlogic.drop.Drop;public class DesktopLauncher {public static void main (String[] arg) {LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();config.title = "Drop";config.width = 800;config.height = 480;new LwjglApplication(new Drop(), config);}
}

``` 如果只对桌面开发感兴趣,下面其余其他平台的部分可以跳过。

Android模块启动器设置

AndroidManifest.xml在android(或drop-android)根目录中进行修改

```xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.badlogic.drop.android"android:versionCode="1"android:versionName="1.0" ><uses-sdk android:minSdkVersion="8" android:targetSdkVersion="20" /><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/GdxTheme" ><activityandroid:name="com.badlogic.drop.android.AndroidLauncher"android:label="@string/app_name"android:screenOrientation="landscape"android:configChanges="keyboard|keyboardHidden|orientation|screenSize"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>

```

android:screenOrientation设置为(landscape)横向,除非你想要(portrait)纵向也可以设置。

加速度计和指南针

如果希望节省电池电量并禁用加速度计和指南针,则在启动器代码中设置useAccelerometer和useCompass为false即可。如下面代码所示:

```java

package com.badlogic.drop.android;import android.os.Bundle;import com.badlogic.gdx.backends.android.AndroidApplication;
import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration;
import com.badlogic.drop.Drop;public class AndroidLauncher extends AndroidApplication {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();config.useAccelerometer = false;config.useCompass = false;initialize(new Drop(), config);}
}

```

我们无法定义 的分辨率Activity,因为它是由 Android 操作系统设置的。

因此这里我们将简单地将 800x480 分辨率缩放到设备的任何分辨率

html模块启动器设置

在html5项目里同样设置800x480分辨率用于渲染图像。

package com.badlogic.drop.client;import com.badlogic.gdx.ApplicationListener; import com.badlogic.gdx.backends.gwt.GwtApplication; import com.badlogic.gdx.backends.gwt.GwtApplicationConfiguration; import com.badlogic.drop.Drop;public class HtmlLauncher extends GwtApplication { @Override public GwtApplicationConfiguration getConfig () { return new GwtApplicationConfiguration(800, 480); }@Override public ApplicationListener createApplicationListener () { return new Drop(); } }

现在所有平台的启动类现在都已正确配置,让我们继续实现游戏逻辑代码部分。

编写加载资产代码

为了简单和方便其他平台复用,我们把所有的游戏代码都放在core模块中。

我们的第一个任务是加载资产并存储对它们的引用。资产通常在ApplicationAdapter.create()方法中加载,所以让我们这样做: ```java package com.badlogic.drop;

import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.audio.Music;
import com.badlogic.gdx.audio.Sound;
import com.badlogic.gdx.graphics.Texture;public class Drop extends ApplicationAdapter {private Texture dropImage;private Texture bucketImage;private Sound dropSound;private Music rainMusic;@Overridepublic void create() {// load the images for the droplet and the bucket, 64x64 pixels eachdropImage = new Texture(Gdx.files.internal("droplet.png"));bucketImage = new Texture(Gdx.files.internal("bucket.png"));// load the drop sound effect and the rain background "music"dropSound = Gdx.audio.newSound(Gdx.files.internal("drop.wav"));rainMusic = Gdx.audio.newMusic(Gdx.files.internal("rain.mp3"));// start the playback of the background music immediatelyrainMusic.setLooping(true);rainMusic.play();// ... more to come ...}// rest of class omitted for clarity

```

对于我们的每个资产,我们在Drop类中都有一个字段,以便我们在其他地方引用它们。

1. 加载图像资源

create()方法中的前两行加载雨滴和水桶的图像。Texture表示存储在视频内存中的加载图像。通常不能绘制到纹理。Texture通过将FileHandle传递给构造函数来实现资产文件加载。 FileHandle实例只能通过Gdx.files来获得。 我们用到了不同类型的资产文件,在这里我们用“内部”文件类型来指代我们的资产。 内部文件位于assetsAndroid 项目的目录中,desktop和HTML5项目引用相同的目录。

接下来我们加载音效和背景音乐。音乐通常太大而无法完全保存在内存中,因此存在差异。libGDX 区分存储在内存中的音效和从存储流式音乐。根据经验,如果音效样本短于 10 秒,您应该使用一个实例,并Music为更长的音频片段使用一个实例。

2. 加载音效资源

一个SoundorMusic实例的加载是通过Gdx.audio.newSound()和Gdx.audio.newMusic()来完成的。就像Texture构造函数一样,这两种方法都采用FileHandle。

在create()方法结束时,我们还告诉Music实例循环并立即开始播放。如果运行该应用程序,就可以看到漂亮的粉红色背景并且能听到下雨的声音。

到这里我们的小游戏所需要的资源都加载到游戏中来了,我们可以在代码任何地方调用这个资源。

下一章我们将讲解如何渲染物体(精灵)到屏幕上。

如果觉得博主写得还不错,欢迎“关注、点赞、收藏” 一键三连。

libGDX跨平台游戏开发框架入门:开发一个小游戏之加载资源相关推荐

  1. 表白小游戏教程:制作一个小游戏送给喜欢的TA(不会编程也能学会哦)

    大家好哇~ 欢迎翻开波波和阿菌的长篇故事~ 不过捏,今天我们不讲故事,今天将由阿菌和大家分享一个小教程:教大家制作一个小游戏,可以用来送给喜欢的人.无须任何计算机专业基础,只要能操作电脑,并在初一的数 ...

  2. 微信小游戏申请注册流程+开发微信小游戏类目需要具备条件

    微信小游戏申请注册流程+开发微信小游戏类目需要具备条件 在这里先讲一下,小程序和小游戏前面的注册流程都是一样的,在注册完毕登录小程序后台后选择类目时需要注意一下,我下面讲解的是已经通过认证的服务号进行 ...

  3. 如何不用服务器来开发一个小游戏

    我是代长新,来自上海享物说,主要负责游戏客户端研发. 享物说是一个大家可以互相赠送物品,有趣.不花钱的社区平台.为了创造更好的社区氛围,我们决定通过小游戏来增加社区的趣味性和互动性. <乐享花园 ...

  4. 如何开发一个小游戏?其中有什么难点

    如果仅仅针对个人开发者来讲,要独立开发一款大型游戏几乎无可能,更大成功的可能还是开发一款类似<羊了个羊>这样洗脑的小程序游戏. 所以这里主要论述小游戏开发的情况,也就是小程序游戏,首先从小 ...

  5. 用python做一个简单的游戏,用python写一个小游戏

    大家好,本文将围绕如何用python做一个简单的小游戏展开说明,python编写的入门简单小游戏是一个很多人都想弄明白的事情,想搞清楚用python做一个简单的游戏需要先了解以下几个事情. 1.Pyt ...

  6. python编程小游戏-使用Python写一个小游戏

    引言 最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏.后台等方面,python也大放异彩,本篇博文将按照正规的项目开发流程,手把手教大家写个python小游戏,来感受下 ...

  7. 【Cocos2d-html5游戏引擎学习笔记(6)】自定义Cocos2d-html5加载资源Loading界面

    这一篇其实本该放在后面写的,只是今天正好把这个整出来了,所以为了防止后面忘记,就在这里先写了. 在运行index.html文件的时候,引擎首先会把资源进行加载,这是为了让游戏在运行时更为流畅,避免了在 ...

  8. TGame游戏新篇:1.5 追求动态的加载资源

    在看Unreal Engine 4.x Scripting with C++ Cookbook(第二版)这本书,把一些必要的基础知识过一过.目前没有学习ygo具体游戏逻辑的实现,先尝试先自己简化一下实 ...

  9. 【h5白鹭引擎】如何快速开发一个小游戏

    1.环境搭建 安装教程传送门:http://edn.egret.com/cn/index.php?g=&m=article&a=index&id=207&terms1_ ...

最新文章

  1. 一文综述经典的深度文本分类方法
  2. 跨域cookie传递
  3. Java使用MyEclipse2017时的一些小细节
  4. How to become an expert in the IP industry? Here is where you should start
  5. CF280C-Game on Tree【数学期望】
  6. maven识别包下的xml
  7. 大学生体测成绩判断c语言_体育改革瞄准高校,体测不过关可能真的毕不了业了...
  8. rpc之使用httpserver实现tpc
  9. 暗中学习的人太坏了,12本书帮你翻车变超车!
  10. 蓝桥杯2021年第十二届C++省赛第九题-双向排序
  11. android 系统相册调用,各版本的区别总结
  12. doors二次开发-dxl开发
  13. 微软的傲慢与偏见——Cortana小娜失败根源
  14. 汇编语言典型例子详解_经典汇编程序100例
  15. JS插件开发之LightBox图片画廊
  16. LLVM IR / LLVM指令集入门
  17. Linux 网桥功能使用
  18. 《Matlab算法》 part1 误差分析
  19. 用Android手机远程桌面连接登陆Windows10(用微软账号登陆),Microsoft账户登陆的计算机远程桌面连接问题
  20. js正则表达式校验值是否为一个数字(正负整数,正负小数均可校验)

热门文章

  1. 卡通风格地图教程来了,全网仅此一个!
  2. 使用 Navicat 代码段
  3. 2021年A特种设备相关管理(锅炉压力容器压力管道)考试题及A特种设备相关管理(锅炉压力容器压力管道)考试技巧
  4. 三层交换与路由器之间连接配置
  5. 孙悟空:越风光,越可怜
  6. 服务器虚拟化的作用是什么,什么是服务器虚拟化-vSphere Platnum-VMware虚拟化服务器 | VMware | CN...
  7. 值得推荐的免费网上课程
  8. 二、IDEA设置、快捷键和代码模板
  9. 2020年最新在线CRM免费下载
  10. pcs for linux7下载,BaiduPCS-Go