Я хочу использовать assetmanager для изображения

MyGdxGame.java

 public void print(){
    manager=new AssetManager();
    manager.load("selectlevel.png",Texture.class);
    manager.finishLoading();
    }

выберите уровень экрана

 public void image(){
    Image img1=game.manager().get(("selectlevel.png"));
    }

что я получаю (

Исключение в потоке "Приложение LWJGL" java.lang.ClassCastException: com.badlogic.gdx.graphics.Texture не может быть приведено к com.badlogic.gdx.scenes.scene2d.ui.Image

я не хочу менять тип изображения на текстуру.

1 ответ

Решение

На основании вашего сообщения об ошибке:

Исключение в потоке "Приложение LWJGL" java.lang.ClassCastException: com.badlogic.gdx.graphics.Texture не может быть приведено к com.badlogic.gdx.scenes.scene2d.ui.Image

Вы пытаетесь поместить текстуру в переменную, созданную для scene2d.ui.Image. Это не будет работать, потому что текстура и scene2d.ui.Image очень разные.

У scene2d.ui.Image есть конструктор, который принимает текстуру, поэтому должен вызываться так:

Image imgVariable = new Image(i_am_a_Texture);

В комментариях, которые вы упомянули, вы получили ошибку

не удается разрешить конструктор 'Image(java.lang.Object)'

Это говорит о том, что когда вы использовали новый конструктор Image, вы передавали ему объект, а не текстуру, которую он ожидал.

Чтобы сделать Объект текстурой, вы можете привести его к текстуре, добавив (текстуру) в объект, который вы хотите наложить следующим образом:

 Texture textureVariable = (Texture) game.manager().get(("selectlevel.png"));

Однако у assetManager уже есть способ сказать, каким классом должен быть возвращаемый объект, и это добавить класс в качестве второго параметра, как показано ниже.

Texture textureVariable = game.manager().get(("selectlevel.png",Texture.class))
Другие вопросы по тегам