我是Libgdx的新手。我有一个要求,我在比赛中有多个球,我想在每次用户接触球时增加球的直径。我使用pixmap.drawCircle()方法来创建球,每次用户触球时,我都会调用一个方法increaseBallDia()来增加球的大小。由于没有增加现有Pixmap的高度和宽度的方法,在increaseBallDia()方法中,我创建了一个增加宽度和高度的新Pixmap,然后绘制一个增加直径的球。
问题是我的increaseBallDia()无法正常工作,并且Pixmap的高度和宽度没有增加。由于这一点,随着球直径的增加,它覆盖整个Pixmap区域,看起来像一个矩形而不是圆形。
任何关于如何解决这个问题的指示都将非常感激。
以下是相关的代码段:
public class MyActor extends Actor {
int actorBallDia = 90;
Pixmap pixmap = new Pixmap(actorBallDia, actorBallDia,Pixmap.Format.RGBA8888);
float actorX, actorY;
Texture texture;
public void increaseBallDia() {
actorBallDia = actorBallDia + 5;
int radius = actorBallDia / 2 - 1;
Pixmap pixmap = new Pixmap(actorBallDia, actorBallDia,
Pixmap.Format.RGBA8888);
pixmap.drawCircle(pixmap.getWidth() / 2 , pixmap.getHeight() / 2,
radius);
pixmap.fillCircle(pixmap.getWidth() / 2 , pixmap.getHeight() / 2,
radius);
texture = new Texture(pixmap);
}
public void createYellowBall() {
pixmap.setColor(Color.YELLOW);
int radius = actorBallDia / 2 - 1;
pixmap.drawCircle(pixmap.getWidth() / 2, pixmap.getHeight() / 2,
radius);
pixmap.setColor(Color.YELLOW);
pixmap.fillCircle(pixmap.getWidth() / 2, pixmap.getHeight() / 2,
radius);
texture = new Texture(pixmap);
}
@Override
public void draw(Batch batch, float alpha) {
if (texture != null) {
batch.draw(texture, actorX, actorY);
}
}
public void addTouchListener() {
addListener(new InputListener() {
@Override
public boolean touchDown(InputEvent event, float x, float y,
int pointer, int button) {
MyActor touchedActor = (MyActor) event.getTarget();
touchedActor.actorTouched = true;
return true;
}
@Override
public void touchUp(InputEvent event, float x, float y,
int pointer, int button) {
MyActor touchedActor = (MyActor) event.getTarget();
touchedActor.actorTouched = false;
}
});
}
@Override
public void act(float delta) {
if (actorTouched) {
increaseBallDia();
}
}
此致 RG
答案 0 :(得分:0)
您应该创建具有最大可能尺寸的像素图。当球要小时,只需按照你的意愿缩小它。