저는 Libgdx를 처음 사용합니다. 나는 게임에서 여러 개의 볼을 가지고 있고 사용자가 볼을 터치 할 때마다 볼의 직경을 늘리고 싶습니다. pixmap.drawCircle() 메서드를 사용하여 볼을 만들었고 사용자가 볼을 터치 할 때마다 메소드 인 increaseBallDia()를 호출하여 볼 크기를 늘립니다. increaseBallDia() 메서드에서 기존 Pixmap의 높이와 너비를 늘리는 방법이 없으므로 너비와 높이가 증가 된 새로운 Pixmap을 만든 다음 증가 된 직경의 공을 그립니다.Libgdx : 동적으로 증가하는 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