LibGdx UI编辑器 OverLap2D 学习(2) 学习UI使用,通过Button学习

2024-01-24 01:58

本文主要是介绍LibGdx UI编辑器 OverLap2D 学习(2) 学习UI使用,通过Button学习,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

之前介绍了OverLap2D的基本界面,今天就来实际上手做一下
按钮,很常用的UI界面上的一个控件,这次用它来上手。


第一步创建一个新的项目
File>>New Project
这里写图片描述
弹出这个对话框,很简单填写一下项目名称,已经需要按照什么分辨率进行画布设置。
我设置的是800*480
这里写图片描述
创建完成出现一个800*480的画布

第二步导入所需资源
File>>Import To Library
这里写图片描述

  1. import mutiple images ,导入图片资源
  2. import spine/spriter animation,导入动画资源,支持spine和spriter动画
  3. import particle effect file,导入粒子效果
  4. import font,导入ttf字体文件
  5. import sprite animation,导入sprite动画
  6. import style,导入Style,暂时不能用哦!
    我们选择下方的两个图片资源,作为这次的button。
    这里写图片描述
    这里写图片描述
    (亲,需要的话,右键自己保存一下吧。)

第三步 将Image 转换为 按钮
拖拽一个浅色的图片放到画布上,然后点击右键,弹出操作菜单。
这里写图片描述
有很多操作,这些操作除了常用的复制,粘贴,剪切,删除之类的,还有3个特殊的操作,本次重要的是那个Convert To Button。其他的后面讲。

点击Convert To Button选项,左侧的树状显示控件区就会发生变化,从原来的一个Image 变成了一个 CompositeItem 包含一个Image
这里写图片描述

双击画布上的图片,进入组合控件的编辑界面。
这里写图片描述
红线标出的地方表明的就是已经进入了组合界面编辑。
右下角的图层界面也发生了变化,多出了2个图层。
这里写图片描述

  1. default ,默认层
  2. normal,按钮正常状态的图片
  3. pressed,点击后按钮的图片

第四步 把对应的图片放到对应的层下
我们现在图层面板下的所有眼睛按钮全部点灰,这样就看不到图片。
然后我们点击,normal图层的眼睛按钮,并且拖拽一个浅色的按钮放到画布上,这样就在normal层下添加了一个Image,记得把图片X,Y位置调成0。
然后点灰normal图层的眼睛按钮,点亮pressed图层的眼睛按钮,同样,我们在pressed图层添加一个深色的Image。
这里写图片描述
添加完成后,点击相对应的层,树状显示控件的界面上会对应高亮显示图层上的资源。
可以检查一下。

第五步 给Button 命名
这里写图片描述
回到主编辑界面,选中做好的button,在属性面板中identifier中输入button,给这个控件命名

第六步 导出资源。
File>>Export Settings
这里写图片描述
选择导出的位置,导出后的资源要最终放到 assets目录下,
为了方便我导出的位置就是游戏项目下Android子项目assets目录下。
下面两个属性是你texturePacker的尺寸,因为就两个图片,我用了256*256。
这里写图片描述
导出后资源是这些。

第七步 用代码调用

游戏渲染代码

package com.mygdx.game;import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.utils.Scaling;
import com.badlogic.gdx.utils.viewport.ScalingViewport;
import com.mygdx.game.stage.ButtonStage;public class MyGdxGame extends ApplicationAdapter {ButtonStage stage;@Overridepublic void create() {stage = new ButtonStage(new ScalingViewport(Scaling.fill,800f,480f));Gdx.input.setInputProcessor(stage);}@Overridepublic void render() {Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);stage.act();stage.draw();}@Overridepublic void resume() {}@Overridepublic void dispose() {stage.dispose();}@Overridepublic void pause() {}}

游戏Stage代码

package com.mygdx.game.stage;import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.scenes.scene2d.InputEvent;
import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
import com.badlogic.gdx.utils.viewport.Viewport;
import com.uwsoft.editor.renderer.Overlap2DStage;
import com.uwsoft.editor.renderer.actor.CompositeItem;
import com.uwsoft.editor.renderer.script.SimpleButtonScript;/*** Created by Administrator on 2015/5/27.*/
public class ButtonStage extends Overlap2DStage{public ButtonStage(Viewport viewport){super(viewport);initSceneLoader();sceneLoader.loadScene("MainScene");CompositeItem button = sceneLoader.getRoot().getCompositeById("button");button.addScript(new SimpleButtonScript());button.addListener(new ClickListener(){@Overridepublic void clicked(InputEvent event, float x, float y) {Gdx.app.log("tag","button clicked");super.clicked(event, x, y);}});addActor(sceneLoader.getRoot());}
}

这里写图片描述
运行后的代码。

代码里面的黑魔法,其实就是SimpleButtonScript这个类,有兴趣的读一下吧,写的时间有点久,之后再开帖子解释具体说这个类吧。

这篇关于LibGdx UI编辑器 OverLap2D 学习(2) 学习UI使用,通过Button学习的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/638211

相关文章

Java中流式并行操作parallelStream的原理和使用方法

《Java中流式并行操作parallelStream的原理和使用方法》本文详细介绍了Java中的并行流(parallelStream)的原理、正确使用方法以及在实际业务中的应用案例,并指出在使用并行流... 目录Java中流式并行操作parallelStream0. 问题的产生1. 什么是parallelS

Linux join命令的使用及说明

《Linuxjoin命令的使用及说明》`join`命令用于在Linux中按字段将两个文件进行连接,类似于SQL的JOIN,它需要两个文件按用于匹配的字段排序,并且第一个文件的换行符必须是LF,`jo... 目录一. 基本语法二. 数据准备三. 指定文件的连接key四.-a输出指定文件的所有行五.-o指定输出

Linux jq命令的使用解读

《Linuxjq命令的使用解读》jq是一个强大的命令行工具,用于处理JSON数据,它可以用来查看、过滤、修改、格式化JSON数据,通过使用各种选项和过滤器,可以实现复杂的JSON处理任务... 目录一. 简介二. 选项2.1.2.2-c2.3-r2.4-R三. 字段提取3.1 普通字段3.2 数组字段四.

Linux kill正在执行的后台任务 kill进程组使用详解

《Linuxkill正在执行的后台任务kill进程组使用详解》文章介绍了两个脚本的功能和区别,以及执行这些脚本时遇到的进程管理问题,通过查看进程树、使用`kill`命令和`lsof`命令,分析了子... 目录零. 用到的命令一. 待执行的脚本二. 执行含子进程的脚本,并kill2.1 进程查看2.2 遇到的

详解SpringBoot+Ehcache使用示例

《详解SpringBoot+Ehcache使用示例》本文介绍了SpringBoot中配置Ehcache、自定义get/set方式,并实际使用缓存的过程,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录摘要概念内存与磁盘持久化存储:配置灵活性:编码示例引入依赖:配置ehcache.XML文件:配置

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

Redis 基本数据类型和使用详解

《Redis基本数据类型和使用详解》String是Redis最基本的数据类型,一个键对应一个值,它的功能十分强大,可以存储字符串、整数、浮点数等多种数据格式,本文给大家介绍Redis基本数据类型和... 目录一、Redis 入门介绍二、Redis 的五大基本数据类型2.1 String 类型2.2 Hash

Redis中Hash从使用过程到原理说明

《Redis中Hash从使用过程到原理说明》RedisHash结构用于存储字段-值对,适合对象数据,支持HSET、HGET等命令,采用ziplist或hashtable编码,通过渐进式rehash优化... 目录一、开篇:Hash就像超市的货架二、Hash的基本使用1. 常用命令示例2. Java操作示例三

Linux创建服务使用systemctl管理详解

《Linux创建服务使用systemctl管理详解》文章指导在Linux中创建systemd服务,设置文件权限为所有者读写、其他只读,重新加载配置,启动服务并检查状态,确保服务正常运行,关键步骤包括权... 目录创建服务 /usr/lib/systemd/system/设置服务文件权限:所有者读写js,其他