2017-11-06 15 views
2

나는 디렉토리의 여러 그림이 화면에 표시되는 게임을하고있다. 나는 scene2d를 사용하고 있습니다. 하지만 어떤 이유로 이러한 사진이 화면에 표시되지 않습니다.
누구나 이유를 설명 할 수 있습니까? 사진은 아무것도를 그립니다 없다, 그래서 배우의libGDX에서 사진을 표시하는 방법?

public class GameScreen extends Stage implements Screen { 
    private FileHandle dirWithTextures; 

public GameScreen() { 
    super(new StretchViewport(1260.0f, 836.0f, new OrthographicCamera())); 
    dirWithTextures = Gdx.files.internal("textures/"); 
} 
public void buildStage() { 
    ArrayList<Picture> pictureList = new ArrayList<Picture>(); 

    for (int i = 0; i < 4; i++) { 
     pictureList.add(new Picture(new Image(newTexture(dirWithTextures.list()[i])))); 
    } 
    Collections.shuffle(pictureList); 

    for (Picture p: pictureList) { 
     p.setPosition(getWidth()/2, getHeight()/2, Align.center); 
     addActor(p); 
    } 
    } 
} 
+0

내 답변을 편집하는 대신 다음에 댓글을 쓰거나 질문을 편집하십시오. 그리고 "내 생각에"당신이 내 코드를 먼저 시험해 보았다는 것을 의미합니까? 액터에는 draw (..) 메서드가있어, 오버라이드 (override)하지 않으면 draw되지 않습니다. – icarumbas

답변

1

당신은 무시되지 않습니다 무승부() 메소드 :

public class Picture extends Actor { 
    private Image img; 
    public Picture(Image img) { 
     this.img = img; 
    } 
} 

그리고 그림이 그려 져야하는 게임의 클래스 : 다음은 내 코드입니다. 이런

무시 :

public class Picture extends Actor { 
    private Image img; 
    public Picture(Image img) { 
     this.img = img; 
    } 
    @Overrine 
    public void draw(Batch batch, float parentAlpha){ 
     image.draw(batch, parentAlpha); 
    } 
} 

액터 연신 방법

public void draw (Batch batch, float parentAlpha) { 
} 
1

Picture 클래스의 데이터 멤버 (Image)처럼 Drawable 부를 갖는 Actor이다.

(Actor + Drawable) 대신 Image을 사용하지 않는 이유는 무엇입니까?

이미지는 그릴 수있는 액터입니다.

public class Picture extends Image { 

     // Any additional data members 
} 

무대를 들어 여기가 상속 대신 연결 관계를 사용하는 것이 좋습니다.

public class GameScreen implements Screen { 
    private FileHandle dirWithTextures; 
    private Stage stage; 

    public GameScreen() { 

     stage= new Stage(new StretchViewport(1260.0f, 836.0f, new OrthographicCamera())); 
     dirWithTextures = Gdx.files.internal("textures/"); 
     buildStage(); 
    } 

    public void buildStage() { 
     ArrayList<Picture> pictureList = new ArrayList<Picture>(); 

     for (int i = 0; i < 4; i++) { 
      pictureList.add(new Picture(new Texture(dirWithTextures.list()[i]))); 
     } 
     Collections.shuffle(pictureList); 

     for (Picture p: pictureList) { 
     p.setPosition(100, 200, Align.center); // < -- set Position according to your requirement. 
     stage.addActor(p); 
     } 
    } 

    @Override 
    public void render(float delta) { 

     Gdx.gl.glClearColor(0,0,0,1); 
     Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 

     stage.draw(); 
     stage.act(); 
    } 

    // implement rest of method of Screen interface 
}