나는이 수업이 있습니다어떻게 그리기 방법 위치를 무시 배우 서브 클래스의 위치를 설정하는
public class MyActor extends Actor{
TextureRegion region;
public MyActor(TextureRegion region)
{
this.region = region;
}
@Override
public void draw(Batch batch, float parentAlpha) {
super.draw(batch, parentAlpha);
batch.draw(region, 0, 0);
}
}
을 그리고는 다음과 같이 여기의 활용 :
public class MyGame implements ApplicationListener {
Stage stage;
MyActor myActor;
@Override
public void create() {
stage = new Stage(0, 0, false);
myActor = new MyActor(new TextureRegion(new Texture(
Gdx.files.internal("texture.png"))));
myActor.setPosition(200, 50);
stage.addActor(myActor);
}
@Override
public void render() {
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
stage.act(Gdx.graphics.getDeltaTime());
stage.draw();
}
}
을 MyActor
클래스에서 배우의 위치를 (0, 0)
으로 설정했습니다. 실제로 무대 위에 그려지기 전에 위치를 바꿀 수 있기를 원했기 때문에 이걸 일종의 기본값으로 사용했습니다. 그 이유는 몇 가지가 있습니다 MyActor
개체와 나는 그들을 무대에서하지만 다른 위치에 그려 싶어요.
그래서 나는 myActor.setPosition(200, 50);
을 만들었지 만 작동하지 않았습니다.
내 질문 : draw(Batch, float)
에 설정된 위치 이외의 위치로 스테이지에 myActor
을 어떻게 그릴 수 있습니까?
하지만 우리는 왜 Actor 내에서 getX(), getY()를 사용해야합니까? 우리가 여전히 외부 값에 따라 위치를 계산해야한다면 왜 배우가 필요할까요? – rdbmsa
'Actor'는 씬 그래프 인 Scene2D의 일부입니다. 장면 그래프의 모든 노드는 부모를 기준으로 로컬 좌표계를가집니다. 따라서 getX() 및 getY()는 * local * 좌표를 반환합니다. 결과 위치는 바깥 쪽 값을 기반으로하지만주의 할 필요가 없습니다. 장면 그래프는 당신을 위해 그것을 돌볼 것입니다. 장면에 엔티티의 계층 적 구조가 없다면 거의 이점이 없습니다. 클릭 수 등을 처리하기 위해 EventListeners를 등록 할 수있는 것 외에도. – noone