Есть ли способ использовать более одного представления Libgdx в одном действии одновременно? - PullRequest
1 голос
/ 08 апреля 2019

Я пытаюсь добавить два приложения AndroidFragmentApplication в одно действие. Но на экране отображается только последний добавленный фрагмент. Другой фрагмент не показывает ничего. Что мне нужно сделать, чтобы нарисовать оба вида?

Сначала я пытался инициализировать представления с помощью класса AndroidApplication. Но это вызвало сбой приложения. Затем я добавил несколько фрагментов, расширяющих приложение AndroidFragmentApplication. Теперь приложение не вылетает, а только последний добавленный фрагмент рисует на экране.

Здесь я добавляю фрагменты-

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ffffff">
    <fragment
        android:layout_width="80dp"
        android:layout_height="100dp"
        android:layout_gravity="center"
        android:id="@+id/alpha_fragment"
        android:name="com.sample.libgdx_final.AlphaFragment" />

    <fragment
        android:id="@+id/coin_fragment"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:name="com.sample.libgdx_final.CoinFragment"
        />
</FrameLayout>

Это мой фрагмент и ApplicationListener -

public class CoinFragment extends AndroidFragmentApplication implements AndroidFragmentApplication.Callbacks{
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return initializeForView(new CoinTranslateLibgdx());
    }
}

CoinTranslateLibgdx.java

class CoinTranslateLibgdx extends ApplicationAdapter {
    private SpriteBatch batch;
    private Texture texture;
    private Sprite sprite;
    private float deltaTime = 0f;
    private boolean increasing = true;

    @Override
    public void create() {
        batch = new SpriteBatch();
        texture = new Texture(Gdx.files.internal("token.png"));
        sprite = new Sprite(texture);
        sprite.setCenterX(Gdx.graphics.getWidth() / 2f);
        sprite.setCenterY(Gdx.graphics.getHeight());
    }
    @Override
    public void render() {
        Gdx.gl20.glClearColor(0, 0, 0, 0);
        batch.begin();
        if (deltaTime <= 1 && increasing) {
            deltaTime += Gdx.graphics.getDeltaTime() * 1f;
        } else if (deltaTime >= 0.09) {
            increasing = false;
            deltaTime -= Gdx.graphics.getDeltaTime() * 1f;
        } else {
            increasing = true;
        }
        batch.setColor(1, 1, 1, deltaTime);
        batch.draw(sprite, 0, 0);
        batch.end();
    }
    @Override
    public void dispose() {
        batch.dispose();
        texture.dispose();
    }
}
...