2017-11-06 16 views
2

私はディレクトリからの複数の画像が画面に表示されるゲームに取り組んでいます。 私はscene2dを使用しています。 何らかの理由で、これらの画像が画面に表示されません。
誰でも理由を説明できますか?ここ は私のコードです:libGDXで画像を表示するには?

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

そして絵が描かれるべきゲームのクラス:

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

私の回答を編集するのではなく、次回にコメントを書くか、質問を編集してください。そして、あなたは私のコードを最初に試しましたか? Actorは空のdraw(..)メソッドを持っています。したがって、オーバーライドしない場合は、描画されません。 – icarumbas

答えて

1

あなたは俳優のdraw()メソッドをオーバーライドしていないので、画像は何も描画しません。このような

上書き:

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です。

なぜあなたはImageの代わりに、(俳優+ Drawableの)を使用していません。

画像を描画することができる俳優です。舞台のために

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 
}