TMXTiledMap の上に配置される AndEngine HUD を作成しようとしています (私は AndEngine の初心者です)。最初は単純にするために、Android ドローアブルを使用して単純な四角形を作成します。アイデアは、これが画面の下部中央に位置し、その下のマップがさまざまな方向に移動しても移動しないということです。今のところ、私がしたいのは、その長方形を表示させることだけです。後で、長方形に他の機能を追加します。
私のドローアブルは次のように作成されます:
?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<corners
android:radius="7dp" />
<gradient
android:startColor="#343434"
android:endColor="#17171717"
android:angle="270"
android:useLevel="false"
android:type="linear" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
そして、私はそれを次のようなレイアウトに引き込みました:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/container"
android:layout_width="300dip"
android:layout_height="100dip"
android:orientation="horizontal"
android:layout_marginLeft="20dp"
android:background="@drawable/menu_bkgrnd" >
</LinearLayout>
そして最後に、これを HUD として取り込もうとしているところです。
rect = new HUD();
ITouchArea container = (ITouchArea) findViewById(R.id.container);
this.rect.registerTouchArea(container);
rect.attachChild((IEntity) container);
ご覧のとおり、AndEngine を満たすために多くのキャストを行っていますが、これを実行すると、マップが完全にめちゃくちゃになります。私はこれについて正しく行っていますか?私のキャスティングは間違っていますか?(または両方かもしれません!)。
助けてくれてありがとう。
編集: Jong と正宗白布鞋が以下に提案したコードに基づいて、Java コードを次のように調整しました。
this.atlas = new BitmapTextureAtlas(null, 256, 256, TextureOptions.BILINEAR_PREMULTIPLYALPHA);
this.atlas.load();
ITextureRegion drawable = BitmapTextureAtlasTextureRegionFactory.createFromResource(atlas, getApplicationContext(), R.drawable.myDrawable, 0, 0);
rect.attachChild(new Sprite(0, 0, drawable, this.getVertexBufferObjectManager()));
この時点で、私はまだこれを画面に表示しようとしています。サイズと位置は後で調整します。
すべてがエラーなしでコンパイルおよび実行されますが、私の画面は完全に混乱しています。
ご覧のとおり、AndEngine がインスタンス化を受け入れるようにするには、コンストラクターの引数にいくつかの小さな調整を加える必要がありました。これを正しく行っているかどうかはわかりません。
このコードで見られるもう 1 つの問題は、このコードが非アクティブな図形を画面に配置するだけのように見えることです。元の投稿で、当面の目標はこの四角形を表示することだと言いましたが、最終的には応答する必要があるコントロールを備えたものになるため、登録されたタッチ領域として表示する必要があると思いますユーザーコマンドに。私がやろうとしていることを過度に最小化した場合は申し訳ありません。
私はまだこれを取得していません。誰か提案はありますか?再度、感謝します!