LibGDX_6.4: 常用系统控件: 复选框(CheckBox)

本文链接: http://blog.csdn.net/xietansheng/article/details/50187885

LibGDX 基础教程(总目录)

1. 复选框(CheckBox)

复选框在许多软件中都随处可见,通常复选框至少由两张表示选中/未选中状态的图片和一个文本描述组成。

这里需要使用的下面两张图片:

checkbox_on.png checkbox_off.png

这两张图片分别代表复选框的 选中 和 未选中 状态,把这两张图片保存到本地,重命名为 checkbox_on.pngcheckbox_off.png,然后复制到 assets 资源文件夹中。

2. 代码示例: CheckBox 的使用

package com.libgdx.test;
		
import com.badlogic.gdx.Application;
import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.scenes.scene2d.Stage;
import com.badlogic.gdx.scenes.scene2d.ui.CheckBox;
import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener;
import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable;
import com.badlogic.gdx.utils.viewport.StretchViewport;
	
/**
 * 游戏主程序的启动入口类
 */
public class MainGame extends ApplicationAdapter {
	
	private static final String TAG = MainGame.class.getSimpleName();
	
	/*
	 * 复选框图片有点小, 为了能明显看到显示效果, 这里把视口世界的宽高设置为 320 * 480,
	 * 并统一使用伸展视口(StretchViewport)
	 */
	public static final float WORLD_WIDTH = 320;
	public static final float WORLD_HEIGHT = 480;
	
	// 舞台
	private Stage stage;
	
	// 复选框选中状态的纹理
	private Texture checkboxOnTexture;
	
	// 复选框未选中状态的纹理
	private Texture checkboxOffTexture;
	
	// 位图字体
	private BitmapFont bitmapFont;
	
	// 复选框
	private CheckBox checkBox;
	
	@Override
	public void create() {
		// 设置日志输出级别
		Gdx.app.setLogLevel(Application.LOG_DEBUG);
		
		// 使用伸展视口(StretchViewport)创建舞台
        stage = new Stage(new StretchViewport(WORLD_WIDTH, WORLD_HEIGHT));
        
        // 将输入处理设置到舞台(必须设置, 否则点击没效果)
        Gdx.input.setInputProcessor(stage);
        
        /*
		 * 第 1 步: 创建复选框 选中 和 未选中 两种状态的纹理, 以及创建位图字体(用于显示复选框的文本)
		 */
        checkboxOnTexture = new Texture(Gdx.files.internal("checkbox_on.png"));
        checkboxOffTexture = new Texture(Gdx.files.internal("checkbox_off.png"));
        
        /*
         * 创建位图字体: 前面我们创建位图字体对象的时候手动指定了一个自己生成的字体文件, 实际上创建位图字体 
         * 对象时, 如果没有指定字体文件(使用空参构造方法), BitmapFont 构造方法中会默认指定一个字体文件, 
         * 这个字体文件内嵌在 gdx.jar 包中, 是一个包含了大小写字母, 数字 和 常用英文标点符号的字体文件。
         * 
         * // 查看源码可知 BitmapFont 空参构造方法如下所示:
         * public BitmapFont() {
         * 		this(
         * 			Gdx.files.classpath("com/badlogic/gdx/utils/arial-15.fnt"),
         * 			Gdx.files.classpath("com/badlogic/gdx/utils/arial-15.png"), 
         * 			false, 
         * 			true
         * 		);
         * }
         */
        bitmapFont = new BitmapFont();
		
		/*
		 * 第 2 步: 创建 CheckBoxStyle
		 */
		CheckBox.CheckBoxStyle style = new CheckBox.CheckBoxStyle();
		
		// 设置 style 的 选中 和 未选中 状态的纹理区域
		style.checkboxOn = new TextureRegionDrawable(new TextureRegion(checkboxOnTexture));
		style.checkboxOff = new TextureRegionDrawable(new TextureRegion(checkboxOffTexture));

		// 设置复选框文本的位图字体
		style.font = bitmapFont;

		// 也可以设置复选框文本的字体颜色(RGBA)
		// style.fontColor = new Color(1, 0, 0, 1);
		
		/*
		 * 第 3 步: 创建 CheckBox
		 */
		checkBox = new CheckBox("Hello", style);
		
		// 设置复选框的位置
		checkBox.setPosition(100, 200);
		
		// 可以手动设置复选框的选中状/未选中态
		// checkBox.setChecked(true);
		
		// 设置复选框的(选中/未选中)状态改变监听器
		checkBox.addListener(new ChangeListener() {
			@Override
			public void changed(ChangeEvent event, Actor actor) {
				Gdx.app.log(TAG, "复选框是否被选中: " + checkBox.isChecked());
			}
		});
        
		/*
		 * 第 4 步: 添加 checkBox 到舞台
		 */
        stage.addActor(checkBox);
	}

	@Override
	public void render() {
		// 黑色清屏
		Gdx.gl.glClearColor(0, 0, 0, 1);
		Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
		
		// 更新舞台逻辑
		stage.act();
		// 绘制舞台
		stage.draw();
	}

	@Override
	public void dispose() {
		// 应用退出时释放资源
		if (checkboxOnTexture != null) {
			checkboxOnTexture.dispose();
		}
		if (checkboxOffTexture != null) {
			checkboxOffTexture.dispose();
		}
		if (bitmapFont != null) {
			bitmapFont.dispose();
		}
		if (stage != null) {
			stage.dispose();
		}
	}

}

运行代码,点击复选框,查看控制台 Log:

sy_result.png

sy_result-log.png


  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谢TS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值