评分组件。
使用方法:
// 星星上限,亮图,背景图
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