Libgdx之Button TextButton ImageButton ImageTextButton 按钮使用
来源:互联网 发布:哈工大人工智能产业园 编辑:程序博客网 时间:2024/06/05 10:00
Button 即按钮,在游戏界面中最常用的元素之一。Button具有3中状态: pressed, unpressed, checked。点击Button按钮时, checked状态触发。 同样Button也是一个Table,可以当做承装其它Actor的容器。
Button的preferred size由背景图片和里面的装载的演员决定的。点击Button时ChangeEvent事件被触发,按钮也会保存checked 状态。通过Button的初始化化函数
public Button (Drawable up) {
this(new ButtonStyle(up, null, null));
}
我们知道,在初始化化Button的时候可以不定义ButtonStyle或者Skin,为想要练习的我们能省下不少时间。但是为了游戏的更美观,建议使用uiskin.json,省去我们定义ButtonStyle的时间。
TextButton extends Button。在Button里面加了一个Label用来显示文字。
ImageButton extends Button。 在Button里面增加了一个Image来显示图片。
ImageTextButton extends Button。 在Button里面增加了一个Label和Image来显示文字和图片。
下面直接展示代码和图片来的更直观一些
Stage stage; Skin skin; Button bt; TextButton tb; ImageButton ib; ImageTextButton itb; Texture imgUp, imgChecked; @Override public void create() { stage = new Stage(); Gdx.input.setInputProcessor(stage); skin = new Skin(Gdx.files.internal("uiskin.json")); // 单纯的一个按钮 bt = new Button(skin); // isChecked默认是false的 bt.setPosition(Gdx.graphics.getWidth() / 2, 20); Gdx.app.log("Button", "width=" + bt.getWidth() + "preWidth=" + bt.getPrefWidth()); Gdx.app.log("Button", "isChecked=" + bt.isChecked()); bt.addListener(new ClickListener() { @Override public void clicked(InputEvent event, float x, float y) { // 通过log可以看出点击Button后,checked状态在切换 Gdx.app.log("Button", "isChecked=" + bt.isChecked()); } }); stage.addActor(bt); // 在按钮上显示文字 tb = new TextButton("Button", skin); tb.setPosition(bt.getX(), bt.getY() + bt.getPrefHeight() + 10); tb.addListener(new ClickListener() { @Override public void clicked(InputEvent event, float x, float y) { if (tb.isChecked()) { tb.setText("Clicked me"); // 不重新设置大小,文字将会出现在Button边框之外 tb.setSize(tb.getLabel().getPrefWidth(), tb.getLabel().getPrefHeight()); } else { tb.setText("Button"); } } }); stage.addActor(tb); imgChecked = new Texture(Gdx.files.internal("badlogic.jpg")); imgUp = new Texture(Gdx.files.internal("badlogic.jpg")); TextureRegion region = new TextureRegion(imgChecked); region.flip(true, true); TextureRegion regionDown = new TextureRegion(imgUp); regionDown.flip(true, false); // 设置了imageUp imageDown imageChecked的图片之后点击就会看见图片随之发生变化 ib = new ImageButton(new TextureRegionDrawable(new TextureRegion(imgUp)), new TextureRegionDrawable(regionDown), new TextureRegionDrawable(region)); ib.setSize(120, 120); ib.setPosition(tb.getX(), tb.getY() + tb.getHeight() + 20); ib.debug(); stage.addActor(ib); ImageTextButton.ImageTextButtonStyle itbs = new ImageTextButton.ImageTextButtonStyle(); // 从skin中获取字体 itbs.font = skin.get("default-font", BitmapFont.class); itbs.imageUp = new TextureRegionDrawable(new TextureRegion(imgUp)); itbs.imageDown = new TextureRegionDrawable(regionDown); itbs.imageChecked = new TextureRegionDrawable(region); itb = new ImageTextButton("ImageText", itbs); // 文字和图片的长度一共是120,默认是左边图片右边文字,可以自己重新写Image itb.setSize(120, 120); itb.setPosition(ib.getX(), ib.getY() + ib.getHeight() + 20);// 默认是Fit,可以切换到这个模式看看图片的变化// itb.getImage().setScaling(Scaling.stretch); itb.addListener(new ClickListener() { @Override public void clicked(InputEvent event, float x, float y) { if (itb.isChecked()) { itb.setText("Click me"); } else { itb.setText("ImageText"); } } }); stage.addActor(itb);// itb = new ImageTextButton("ImageTest", style) } @Override public void render() { Gdx.gl.glClearColor(0.39f, 0.58f, 0.92f, 1.0f); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); stage.act(); stage.draw(); // 当Button按下时触发此事件 if (bt.isPressed()) { Gdx.app.log("Button", "isPressed"); } // 当鼠标滑过此按钮时触发此事件 if (bt.isOver()) { Gdx.app.log("Button", "isOver"); } } @Override public void dispose() { stage.dispose(); skin.dispose(); imgUp.dispose(); imgChecked.dispose(); }
1 0
- Libgdx之Button TextButton ImageButton ImageTextButton 按钮使用
- Android学习路之Button(按钮)与ImageButton(图像按钮)
- 按钮控件(Button,LinkButton,ImageButton)
- Android之Button,ImageButton
- Button(按钮)与ImageButton(图像按钮)
- 一看就会Android之按钮Button和图片按钮ImageButton的用法
- UI控件之Button(按钮)和ImageButton(图像按钮)
- android 学习 ---控件按钮,Button 与ImageButton,
- 如何把Button按钮样式换成ImageButton?
- Button的使用(十):ImageButton
- button以及Imagebutton的使用
- Button和ImageButton的使用
- Android成长之路-Button、ImageButton、ToggleButton按钮的功能和用法
- android 用户界面笔记之Button和ImageButton实现按钮响应事件两种方法
- Libgdx中TextButton的一些思考
- 【6】Button(按钮)与ImageButton(图像按钮)
- Android练习-----普通按钮(Button) && 图片按钮(ImageButton)
- 界面组件——按钮(Button)与图片按钮(ImageButton)
- 数据库范式简析和举例
- 解析Android中应用程序文件存储用得到的一些文件路径
- 网页前端项目评审参考标准
- java集合整理
- android 图片瀑布流效果
- Libgdx之Button TextButton ImageButton ImageTextButton 按钮使用
- 我的第一个C#
- c/C++ 田忌赛马(贪心算法)
- Hibernate-缓存
- Ubuntu14.04桥接网络设置与SSH登陆
- 苹果自带的json解析NSJSONSerialization(序列化)
- 小白笔记------------------最小m段和问题
- <<金刚经>> 读书小记
- 显式锁ReentrantLock