Я хочу использовать 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))