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

相关文章

使用Python实现一键隐藏屏幕并锁定输入

《使用Python实现一键隐藏屏幕并锁定输入》本文主要介绍了使用Python编写一个一键隐藏屏幕并锁定输入的黑科技程序,能够在指定热键触发后立即遮挡屏幕,并禁止一切键盘鼠标输入,这样就再也不用担心自己... 目录1. 概述2. 功能亮点3.代码实现4.使用方法5. 展示效果6. 代码优化与拓展7. 总结1.

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

Linux中的计划任务(crontab)使用方式

《Linux中的计划任务(crontab)使用方式》:本文主要介绍Linux中的计划任务(crontab)使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、前言1、linux的起源与发展2、什么是计划任务(crontab)二、crontab基础1、cro

kotlin中const 和val的区别及使用场景分析

《kotlin中const和val的区别及使用场景分析》在Kotlin中,const和val都是用来声明常量的,但它们的使用场景和功能有所不同,下面给大家介绍kotlin中const和val的区别,... 目录kotlin中const 和val的区别1. val:2. const:二 代码示例1 Java

C++变换迭代器使用方法小结

《C++变换迭代器使用方法小结》本文主要介绍了C++变换迭代器使用方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1、源码2、代码解析代码解析:transform_iterator1. transform_iterat

C++中std::distance使用方法示例

《C++中std::distance使用方法示例》std::distance是C++标准库中的一个函数,用于计算两个迭代器之间的距离,本文主要介绍了C++中std::distance使用方法示例,具... 目录语法使用方式解释示例输出:其他说明:总结std::distance&n编程bsp;是 C++ 标准

vue使用docxtemplater导出word

《vue使用docxtemplater导出word》docxtemplater是一种邮件合并工具,以编程方式使用并处理条件、循环,并且可以扩展以插入任何内容,下面我们来看看如何使用docxtempl... 目录docxtemplatervue使用docxtemplater导出word安装常用语法 封装导出方

Linux换行符的使用方法详解

《Linux换行符的使用方法详解》本文介绍了Linux中常用的换行符LF及其在文件中的表示,展示了如何使用sed命令替换换行符,并列举了与换行符处理相关的Linux命令,通过代码讲解的非常详细,需要的... 目录简介检测文件中的换行符使用 cat -A 查看换行符使用 od -c 检查字符换行符格式转换将

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.