热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:深入解析libgdx游戏框架中的开源Java系统控件Button类的专题15

篇首语:本文由编程笔记#小编为大家整理,主要介绍了开源java游戏框架libgdx专题-15-系统控件-Button类相关的知识,希望对你有一定的参考价值。B

篇首语:本文由编程笔记#小编为大家整理,主要介绍了开源java游戏框架libgdx专题-15-系统控件-Button类相关的知识,希望对你有一定的参考价值。



Button类继承与Actor类,可以在舞台中使用,但是它也继承了许多Actor的子类,如Group、Table、WidgetGroup灯。

常用构造方法:

Button():创建按钮对象,不设置其样式及大小

Button(Button.ButtonStyle style):创建一个按钮,参数是指定按钮的大小及样式

Button(Drawable up):创建一个按钮对象,按钮未单击时(即抬起状态),样式为参数内纹理样式

Button(Drawable up,Drawable down):创建按钮对象,第一个参数代表抬起状态使用up纹理,第二个参数代表按下状态时使用down纹理

Button(Drawable up,Drawable down):创建按钮对象,第一二参数同上,第三个参数代表鼠标滑过按钮时使用的纹理

Button(Skin skin):创建按钮对象,使用Skin对象中的样式

Button(Skin skin,String styleName):使用Skin对象中指定名称的按钮样式。

常用方法:

draw(Batch batch,float parentAlpha):绘制当前按钮。第一个参数代表绘制所需的精灵画笔,第二个参数代表绘制的当前按钮透明度

getClickListener():获取当前按钮所添加的监听器

getMinHight():获取按钮最小高度

getMinWidth():获取按钮最小宽度

invalidate():作废当前布局

invalidateHierarchy():作废当前演员及其所有父类

layout():计算当前布局内所有演员的绘制信息

pack():排列当前演员的宽度与高度信息并选取最优的宽度与高度

setFillParent(boolean fillParent):是否填充满当前区域

setLayoutEnabled(boolean enabled):是否将当前布局使用与当前演员及其子类

validate():确定当前演员是否已被布局

常用属性:

checked:鼠标滑过按钮显式的纹理,返回类型为Drawable

checkedOver:鼠标滑过按钮并离开按钮显式的纹理对象,返回Drawable类型

down:被按钮按下时显示的纹理,返回Drawable类型

pressedOffsetX:单击当前按钮的鼠标的X轴偏移量

pressedOffsetY:单击当前按钮的鼠标的Y轴偏移量

unpressedOffsetX:离开当前按钮的鼠标的X轴偏移量

unpressedOffsetY:离开当前按钮的鼠标的Y轴偏移量

up:按钮未被按下时显示的纹理,返回类型为Drawable类型变量

代码:


1 package com.mygdx.syscontrol;
2
3 import com.badlogic.gdx.scenes.scene2d.InputEvent;
4 import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
5 /**
6 * 我的点击事件类
7 * @author Jack(乐智)
8 * @blog dtblog.cn
9 * @qq 984137183
10 */
11 public class MyClick extends ClickListener {
12
13 @Override
14 public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
15 //打印
16 System.out.println("Button:"+button);
17 return true;
18 }
19
20 }

 


1 package com.mygdx.syscontrol;
2
3 import com.badlogic.gdx.ApplicationAdapter;
4 import com.badlogic.gdx.Gdx;
5 import com.badlogic.gdx.graphics.GL20;
6 import com.badlogic.gdx.graphics.Texture;
7 import com.badlogic.gdx.graphics.g2d.TextureRegion;
8 import com.badlogic.gdx.scenes.scene2d.Stage;
9 import com.badlogic.gdx.scenes.scene2d.ui.Button;
10 import com.badlogic.gdx.scenes.scene2d.ui.Skin;
11 import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable;
12 /**
13 * 使用Button
14 * @author Jack(乐智)
15 * @blog dtblog.cn
16 * @qq 984137183
17 */
18 public class TestButton extends ApplicationAdapter {
19 //声明Skin对象
20 private Skin skin;
21 //声明按钮A
22 private Button buttonA;
23 //声明按钮B
24 private Button buttonB;
25 //声明舞台
26 private Stage stage;
27 //按钮抬起时纹理
28 private Texture btnUp;
29 //按钮按下时纹理
30 private Texture btnDown;
31 //声明监听器
32 private MyClick click;
33
34 @Override
35 public void create() {
36 //实例化skin对象
37 skin=new Skin(Gdx.files.internal("button/test.json"));
38 //实例化舞台
39 stage=new Stage();
40 //初始化按钮抬起纹理
41 btnUp=new Texture(Gdx.files.internal("button/btnUp.png"));
42 //初始化按钮按下纹理
43 btnDown=new Texture(Gdx.files.internal("button/btnDown.png"));
44 //抬起纹理样式
45 TextureRegionDrawable btn_up=new TextureRegionDrawable(new TextureRegion(btnUp));
46 //按下纹理样式
47 TextureRegionDrawable btn_down=new TextureRegionDrawable(new TextureRegion(btnDown));
48 //实例化按钮A
49 buttOnA=new Button(skin.get("style", Button.ButtonStyle.class));
50 //初始化按钮B
51 buttOnB=new Button(btn_up,btn_down);
52 //初识化监听器
53 click=new MyClick();
54 //添加监听器
55 buttonA.addListener(click);
56 buttonB.addListener(click);
57 //设置按钮b的位置
58 buttonB.setPosition(100, 100);
59 //添加按钮b到舞台
60 stage.addActor(buttonB);
61 //添加按钮a到舞台
62 stage.addActor(buttonA);
63 //注册舞台监听
64 Gdx.input.setInputProcessor(stage);
65 }
66
67 @Override
68 public void render() {
69 Gdx.gl.glClearColor(1, 1, 1, 1);
70 Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
71 //更新舞台逻辑
72 stage.act();
73 //绘制舞台内容
74 stage.draw();
75 }
76
77 }

 


资源路径:

技术分享技术分享

效果图:

技术分享技术分享

原文由博主 乐智 编辑撰写,版权归博主所有。


原文地址 http://www.dtblog.cn/1170.html 转载请注明出处!



推荐阅读
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Java图形化计算器设计与实现
    本文介绍了使用Java编程语言设计和实现图形化计算器的方法。通过使用swing包和awt包中的组件,作者创建了一个具有按钮监听器和自定义界面尺寸和布局的计算器。文章还分享了在图形化界面设计中的一些心得体会。 ... [详细]
  • android 触屏处理流程,android触摸事件处理流程 ? FOOKWOOD「建议收藏」
    android触屏处理流程,android触摸事件处理流程?FOOKWOOD「建议收藏」最近在工作中,经常需要处理触摸事件,但是有时候会出现一些奇怪的bug,比如有时候会检测不到A ... [详细]
  •  项目地址https:github.comffmydreamWiCar界面做的很难看,美工方面实在不在行。重点是按钮触摸事件的处理,这里搬了RepeatListener项目代码,例 ... [详细]
  • 使用Flutternewintegration_test进行示例集成测试?回答首先在dev下的p ... [详细]
  • 当我在doWork方法中运行代码时,通过单击button1,进度条按预期工作.但是,当我从其他方法(即btn2,btn3)将列表传递给doWork方法时,进度条在启动后会跳转到10 ... [详细]
  • 四、连接屏幕流各位读者好!我们已经到了应用开发的一个重要阶段——连接屏幕。如您所知,我们在上一章 ... [详细]
  • 先上图引入插件在pubspec.yaml中引入charts_flutter插件使用的时候版本到0.6.0,插件地址:https:github.comgooglecharts使用插件 ... [详细]
  • 2048小游戏小记
    1。游戏界面布局由textview1与textview2来显示分数,2048游戏主界面由gridlayout组成,底部添加Button重启游戏。2.创建游戏主类Gameview在构 ... [详细]
  • 多维数组的使用
    本文介绍了多维数组的概念和使用方法,以及二维数组的特点和操作方式。同时还介绍了如何获取数组的长度。 ... [详细]
  • 本文介绍了如何使用Express App提供静态文件,同时提到了一些不需要使用的文件,如package.json和/.ssh/known_hosts,并解释了为什么app.get('*')无法捕获所有请求以及为什么app.use(express.static(__dirname))可能会提供不需要的文件。 ... [详细]
  • Java自带的观察者模式及实现方法详解
    本文介绍了Java自带的观察者模式,包括Observer和Observable对象的定义和使用方法。通过添加观察者和设置内部标志位,当被观察者中的事件发生变化时,通知观察者对象并执行相应的操作。实现观察者模式非常简单,只需继承Observable类和实现Observer接口即可。详情请参考Java官方api文档。 ... [详细]
  • Spring学习(4):Spring管理对象之间的关联关系
    本文是关于Spring学习的第四篇文章,讲述了Spring框架中管理对象之间的关联关系。文章介绍了MessageService类和MessagePrinter类的实现,并解释了它们之间的关联关系。通过学习本文,读者可以了解Spring框架中对象之间的关联关系的概念和实现方式。 ... [详细]
author-avatar
安安1
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有