-1
\$\begingroup\$

I loaded and get a texture from assetmanager but whenever I test the app it only shows black rectangles instead of the texture. I tried finding some probable cause for this in my code but I can't find any. Here's my code:

MainGame.java

public class MainGame extends Game { ... ... @Override public void create () { EnemyAssets.load(); EnemyAssets.manager.finishLoading(); screenWidth = Gdx.graphics.getWidth(); screenHeight = Gdx.graphics.getHeight(); camera = new OrthographicCamera(); camera.setToOrtho(false,screenWidth, screenHeight); batch = new SpriteBatch(); } @Override public void render () { super.render(); batch.begin(); batch.end(); } @Override public void dispose () { batch.dispose(); EnemyAssets.dispose(); } 

EnemyAnimation.java: (Here is where I get the asset from AssetsManager)

public class EnemyAnimation extends Actor{ MainGame app; LevelOneScreen levelOneScreen; private Animation enemyAnimation; private static final int FRAME_COLS_WALK = 10; private static final int FRAME_ROWS_WALK= 1; public TextureRegion currentFrame; public float enemyW; public float enemyH; public float enemyWidth; public float enemyHeight; private float stateTime = 0f; public float enemyX; public float enemyY; final float delta = Gdx.graphics.getDeltaTime(); public float enemyXBound; public float enemyYBound; public EnemyAnimation(final MainGame app) { this.app = app; this.enemyX = enemyX; this.enemyY = enemyY; Texture enemySprite = EnemyAssets.manager.get("enemySprite.png",Texture.class); enemySprite.setFilter(Texture.TextureFilter.MipMapLinearNearest,Texture.TextureFilter.MipMapLinearNearest); TextureRegion[][] tmp = TextureRegion.split(enemySprite, (int) enemySprite.getWidth() / FRAME_COLS_WALK, (int) enemySprite.getHeight() / FRAME_ROWS_WALK); TextureRegion[] enemyTexRegion = new TextureRegion[FRAME_COLS_WALK * FRAME_ROWS_WALK]; int index = 0 ; for (int i = 0; i < FRAME_ROWS_WALK; i++) { for (int j = 0; j < FRAME_COLS_WALK; j++) { enemyTexRegion[index++] = tmp[i][j]; } } enemyAnimation = new Animation(0.044f,enemyTexRegion); currentFrame = enemyAnimation.getKeyFrame(stateTime, true); enemyW = currentFrame.getRegionWidth(); enemyH= currentFrame.getRegionHeight(); enemyXBound = getX(); enemyYBound = getY(); enemyWidth = app.screenWidth*0.166667f; enemyHeight = enemyWidth *(enemyH/enemyW); this.setSize(enemyWidth, enemyHeight); this.setBounds(enemyXBound,enemyYBound,enemyWidth,enemyHeight); this.isTouchable(); } public void draw(Batch batch, float parentAlpha) { super.draw(batch, parentAlpha); final float delta = Gdx.graphics.getDeltaTime(); stateTime += delta; TextureRegion currentFrame = enemyAnimation.getKeyFrame(stateTime, true); batch.draw(currentFrame,getX(),getY(),enemyWidth,enemyHeight); } } 

EnemyAssets.java (Here is my AssetsManager)

public class EnemyAssets { public static final AssetManager manager = new AssetManager(); public static void load(){ manager.load("enemySprite.png",Texture.class); } public static void dispose(){ manager.dispose(); } } 

LevelOneScreen.java

public class LevelOneScreen implements Screen { public MainGame app; private Stage stage; private Stage stageNinja; public EnemyAnimation enemyAnimation; private float deltaTime = Gdx.graphics.getDeltaTime(); public Array<EnemyAnimation> enemyAnimate; public LevelOneScreen(final MainGame app){ this.app = app; this.stage = new Stage(new StretchViewport(app.screenWidth, app.screenHeight, app.camera)); this.stageNinja = new Stage(new StretchViewport(app.screenWidth, app.screenHeight, app.camera)); enemyAnimate = new Array<EnemyAnimation>(); enemyAnimate.add(new EnemyAnimation(app)); enemyAnimation = new EnemyAnimation(app); } @Override public void show() { InputMultiplexer inputMultiplexer = new InputMultiplexer(); inputMultiplexer.addProcessor(stage); inputMultiplexer.addProcessor(stageNinja); Gdx.input.setInputProcessor(inputMultiplexer); enemyAct1(); } public void enemyAct1(){ for(int i = 1; i < 6; i++){enemyAnimate.add(new EnemyAnimation(app));} enemyAnimate.get(1).setPosition(app.screenWidth*0.1f,app.screenHeight); stageNinja.addActor(enemyAnimate.get(1)); enemyAnimate.get(1).addAction(moveTo(app.screenWidth*0.1f,enemyDestination,enemyTimeDrop1)); enemyAnimate.get(2).setPosition(app.screenWidth*0.1f+enemyAnimation.enemyWidth,app.screenHeight+enemyAnimation.enemyHeight); stageNinja.addActor(enemyAnimate.get(2)); enemyAnimate.get(2).addAction(moveTo(app.screenWidth*0.1f+enemyAnimation.enemyWidth,enemyDestination,enemyTimeDrop2)); enemyAnimate.get(3).setPosition(app.screenWidth*0.1f+enemyAnimation.enemyWidth*2f,app. stageNinja.addActor(enemyAnimate.get(3)); enemyAnimate.get(3).addAction(moveTo(app.screenWidth*0.1f+enemyAnimation.enemyWidth*2f,enemyDestination,enemyTimeDrop3)); } @Override public void render(float delta) { Gdx.gl.glClearColor(0, 0, 0, 1); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); update(delta); } public void update(float deltaTime){ stage.draw(); stageNinja.draw(); stage.act(deltaTime); stageNinja.act(deltaTime); app.batch.begin(); app.batch.end(); } @Override public void resize(int width, int height) { app.camera.setToOrtho(false, app.screenWidth, app.screenHeight); app.camera.update(); stage.getViewport().setScreenSize(app.screenWidth, app.screenHeight); stageNinja.getViewport().setScreenSize(app.screenWidth, app.screenHeight); } @Override public void dispose() { stage.dispose(); stageNinja.dispose(); } } 
\$\endgroup\$

1 Answer 1

0
\$\begingroup\$

You are loading enemySprite.png

manager.load("enemySprite.png",Texture.class); 

but then trying to get enemy128.png instead

Texture enemySprite = EnemyAssets.manager.get("enemy128.png",Texture.class); 
\$\endgroup\$
10
  • \$\begingroup\$ I'm sorry about that. I already edited my question. In my code in android studio, I load and get the enemySprite.png but still shows only black rectangles. \$\endgroup\$ Commented Jan 22, 2017 at 6:11
  • \$\begingroup\$ There is still error with naming in your code. Now it's enemSprite.png instead of enemySprite.png. \$\endgroup\$ Commented Jan 22, 2017 at 6:35
  • \$\begingroup\$ I edited it already but still shows only black rectangles instead of the texture from assetmanager. \$\endgroup\$ Commented Jan 22, 2017 at 8:33
  • \$\begingroup\$ Hey, do you have 128 different images? \$\endgroup\$ Commented Jan 22, 2017 at 8:51
  • \$\begingroup\$ No, 128 is the resolution of my images \$\endgroup\$ Commented Jan 22, 2017 at 10:53

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.