2016-03-29 12 views
2

テクスチャに問題があります。テーブルは完璧に機能しますが、テクスチャを追加しようとするとAndroid Studioは私に同意しません。LibGDX:テーブルにテクスチャを追加できません

private Sprite tiger2; 

batch.begin(); 
    batch.setColor(tiger2.getColor()); 
    batch.draw(
      tiger2, 
      Gdx.graphics.getWidth()/2f - tiger2.getRegionWidth()/2f, 
      Gdx.graphics.getHeight()/2f - tiger2.getRegionHeight()/2f, 
      tiger2.getRegionWidth(), 
      tiger2.getRegionHeight() 

    ); 
    batch.end(); 

tiger2 = new Sprite(new Texture("tiger2.png")); 

これは、私はそれを書くべきかであるならば、私にはわからない:

table.add(tiger2); 

私はこのエラーを取得する: は、メソッドを解決できません「(com.badlogic.gdx.graphics.g2d.Sprite)を追加」テーブルを仮定

table.add(**tiger2**); 

答えて

3

、これはあなたが問題を抱えている理由はコアな理由である:それはこのようになります。基本的にint i = "Hello World"と同じですが、incompatible typesのようなエラーが発生します。つまり、IntegerコンテナにはStringを保持できません。

行の上にマウスを置くと、table.addには俳優が必要なことがわかります。 Spriteの定義に行くと、これはどのような方法でもActorを拡張しないことに気付きます。したがって、Actor a = new Sprite()を実行すると、上記と同じエラーが発生します。Sprite objectActor containerに含めることはできません。これらはプログラミングの基本的な基礎です。

したがって、互換性のあるアクターは何ですか? TextBox、Table、ScrollPane、Window、DialogueなどのActorを継承するものすべてActionも拡張して独自のActorを作成できますが、これで苦労しているので、このまま待つ必要があります。

最も簡単な解決策はscene2d.ui.Imageです。このクラスを調べると、それはWidgetから伸びています。Widgetを調べると、それはActorから伸びることがわかります。あなたはあなたのお母さんの母親であり、あなたのおばあちゃんの母親ですから、Imageは俳優です。

あなたはImageコンストラクタは、あなたが最も簡単な方法に気づくでしょう取るもの調べる場合

イメージはどちらかのスプライトを取らない Sprite table.addようになりませんから、 SpriteDrawableを作成することです。 SpriteDrawableはスプライトをとり、 Drawableで、コンストラクタ Imageと互換性があります。

Image image = new Image(new SpriteDrawable(mySprite)); 
table.add(image); 

あなたのスプライトと空想Spriteものをやっていない場合は、全く同じようにTextureで画像を作成できるようにイメージがあまりにもテクスチャを取ります。これはIDEでnew Image(と入力すると表示され、intellisenseは互換性のあるコンストラクタを知らせます。

これらのタイプを理解し、使用するIDEとドキュメントを使用してください。 Android Studioでは、クラスを右クリックしてgoto -> declarationを実行し、問題のクラスを表示できます。メモ帳のようなものを使用していない限り、他のIDEは同等の方法を持っています。

+0

はい、ただし、スプライトを必要としないテクスチャでイメージを作成できます。新しいイメージ(テクスチャ)。 –

+1

@ YasenBagalev私はそれを言及します。しかし、スプライトの状態を維持したい場合は、スプライトの状態を変更することができます。スプライトドローブブルを追加することができます。 – Madmenyo

+0

申し訳ありません。 –

2

はScene2D表である:

テクスチャが俳優ではなく、テーブルに追加することができません。これを修正するには、テクスチャをImage(テクスチャを含むアクタ)に追加します。あなたがテーブルではないTextureからSpriteを追加しようとしている

Image tiger2Image = new Image(new Texture("tiger2.png")); 
table.add(tiger2Image); 
関連する問題