2014-11-12 3 views
0

저는 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

답변

0

당신은 그것의 가장 큰 가능한 치수 픽스맵을 만들어야합니다

다음은 관련 코드입니다. 공이 작을 때, 원하는대로 크기를 조절하십시오.