Я пытаюсь создать AndEngine HUD, который будет располагаться поверх TMXTiledMap (потерпите, я новичок в 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, но когда я запускаю это, карта полностью испорчена. Я правильно об этом говорю? Мой кастинг неправильный? (а может и то и другое!).
Спасибо за любую помощь.
РЕДАКТИРОВАТЬ: на основе кода, предложенного Джонгом и 正宗白布鞋 ниже, я изменил свой код 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 принимать мои экземпляры. Не уверен, что я делаю это правильно.
Другая проблема, которую я вижу в этом коде, заключается в том, что мне кажется, что этот код просто помещает неактивную фигуру на мой экран. Я знаю, что в своем исходном посте я сказал, что моя непосредственная цель — сделать так, чтобы этот прямоугольник отображался, но я думаю, что он должен отображаться как зарегистрированная сенсорная область, поскольку в конечном итоге это будет что-то с элементами управления, которые должны реагировать. к командам пользователя. Извините, если я слишком минимизировал то, что я пытаюсь сделать.
Я все еще не понимаю этого. У кого-нибудь есть предложения? Спасибо еще раз!