文档章节

Libgdx学习笔记:UI之评分组件

flyoahc
 flyoahc
发布于 2015/12/30 14:48
字数 283
阅读 77
收藏 1


评分组件。


使用方法:

// 星星上限,亮图,背景图
CHRatingBar chRatingBar = new CHRatingBar(5, CHRes.asset.starsp_png, CHRes.asset.starspgray_png);
addActor(chRatingBar);
// 星星进度
chRatingBar.setRating(1.5f);

代码展示;

package com.oahcfly.chgame.core.ui;

import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.Batch;
import com.badlogic.gdx.scenes.scene2d.Actor;
import com.oahcfly.chgame.core.Chao;
import com.oahcfly.chgame.core.map.CHTiledActor;

/**
 * 
 * 用星型来显示等级评定
 * @author haocao
 *
 */
public class CHRatingBar extends Actor {

	private float numStars;
	private float rating;
	private CHTiledActor bgTiledActor;
	private Texture lightTexture, bgTexture;

	/**
	 * 
	 * @param max 最大数量
	 * @param lightPngPath
	 * @param bgPngPath
	 */
	public CHRatingBar (float max, String lightPngPath, String bgPngPath) {
		this.lightTexture = Chao.game.getTexture(lightPngPath);
		this.bgTexture = Chao.game.getTexture(bgPngPath);
		setNumStars(max);
	}

	public void setNumStars (float numStars) {
		this.numStars = numStars;
		bgTiledActor = new CHTiledActor(this.bgTexture, bgTexture.getWidth() * numStars, bgTexture.getHeight());
		setSize(bgTexture.getWidth() * numStars, bgTexture.getHeight());
	}

	@Override
	public void draw (Batch batch, float parentAlpha) {
		Color color = getColor();
		batch.setColor(color.r, color.g, color.b, color.a);

		bgTiledActor.setPosition(getX(), getY());
		bgTiledActor.draw(batch, parentAlpha);
		float tmpx = getX();
		float tmpy = getY();
		// 进度
		if (rating > 0) {
			// 有几个完整star
			int fullx = (int)rating;
			for (int i = 0; i < fullx; i++) {
				batch.draw(lightTexture, tmpx, tmpy);
				tmpx += lightTexture.getWidth();
			}
			float remainX = rating - fullx;
			if (remainX > 0) {
				float remainW = remainX * lightTexture.getWidth();
				float u = 0, v = 1;
				float u2 = remainX, v2 = 0;
				batch.draw(lightTexture, getX() + fullx * lightTexture.getWidth(), getY(), remainW, lightTexture.getHeight(), u, v,
					u2, v2);
			}
		}
	}

	public float getMax () {
		return numStars;
	}

	public float getRating () {
		return rating;
	}

	public void setRating (float rating) {
		if (rating > numStars) rating = numStars;
		this.rating = rating;

	}

}



基于Libgdx开发的开源游戏框架CHGame:

http://git.oschina.net/oahcfly/CHGameFrame


© 著作权归作者所有

共有 人打赏支持
flyoahc
粉丝 12
博文 37
码字总数 15728
作品 0
南京
程序员
私信 提问
Libgdx学习笔记:Scene2d之Group

UI组件之Group 当Group旋转或缩放时,它的孩子们正常绘制,并且Batch变换后正确的旋转或缩放。 绘制Group前,Batch flush使得变换可以设置。有很多Group时这将可能成为性能瓶颈。如果在一组演...

flyoahc
2014/11/04
0
2
LibGDX学习-LibGDX基本框架

Libgdx作者博客:http://www.badlogicgames.com/ Libgdx项目地址:https://github.com/libgdx/libgdx/ 关于LibGDX的学习,建议看看Beginning Android Games, 2nd Edition,该书也是由LibGDX作......

kangyunqiang
2013/12/01
0
0
libGDX 1.0 正式发布,Android 游戏引擎

libGDX 1.0 发布,此版本现已提供下载,主要更新内容如下: 更新了基于 Gradle 项目的安装 ,不需要下载二进制包,不需要更多的 jars,支持所有平台的简单打包!Simple updates of libgdx an...

oschina
2014/04/21
2.1K
3
LibGDX 跨平台游戏开发基础教程(总目录)

本文链接: http://blog.csdn.net/xietansheng/article/details/50185655 前言 本套教程讲解了 LibGDX 的基础开发,从环境搭建,到基础 API 的使用,最后再到 2048 和 Flappy Bird 两个游戏的...

xietansheng
2015/12/09
0
0
android游戏开发框架libgdx的使用(二十二)—利用TABLELAYOUT进行布局

前面有一篇文章介绍了用TWL进行布局,最近做其他java的东西接触到了table-layout,用着很不错,仔细看来一下文档,原来还支持libgdx。 简单试用了一下,比TWL好使多了。 TABLELAYOUT简介 TA...

长平狐
2013/11/25
699
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring学习记录

Java类定义配置 @Configuration //标记为配置类@ComponentScan //标记为扫描当前包及子包所有标记为@Component的类@ComponentScan(basePackageClasses = {接口.class,...}) //标记为扫描当...

CHONGCHEN
12分钟前
0
0
如何开发一款以太坊(安卓)钱包系列2 - 导入账号及账号管理

这是如何开发一款以太坊(安卓)钱包系列第2篇,如何导入账号。有时用户可能已经有一个账号,这篇文章接来介绍下,如何实现导入用户已经存在的账号。 导入账号预备知识 从用户需求上来讲,导...

Tiny熊
今天
3
0
intellJ IDEA搭建java+selenium自动化环境(maven,selenium,testng)

1.安装jdk1.8; 2.安装intellJ; 3.安装maven; 3.1 如果是单前用户,配置用户环境变量即可,如果是多用户,则需配置系统环境变量,变量名为MAVEN_HOME,赋值D:\Application\maven,往path中...

不最醉不龟归
今天
4
0
聊聊ShenandoahGC的Brooks Pointers

序 本文主要研究一下ShenandoahGC的Brooks Pointers Shenandoah Shenandoah面向low-pause-time的垃圾收集器,它的GC cycle主要有 Snapshot-at-the-beginning concurrent mark包括Init Mark(P......

go4it
昨天
4
0
Makefile通用编写规则

#简单实用的Makefile模板: objs := a.o b.o test:$(objs) gcc -o test $^ # .a.o.d .b.o.d dep_files := $(foreach f,$(objs),.$(f).d) dep_files := $(wildcard $(dep_files)) ifneq ($(d......

shzwork
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部