2013-07-05 2 views
1

Я делаю игру в libgdx. Я использую класс AssetManager для загрузки активов. Когда я запускаю свою игру, требуется больше времени для загрузки активов на устройстве Android и отображения черного экрана в это время. Как я могу решить эту проблему.Как уменьшить время загрузки всех активов в libgdx

ответ

5

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

import com.badlogic.gdx.Gdx; 
import com.badlogic.gdx.assets.AssetManager; 
import com.badlogic.gdx.graphics.GL10; 
import com.badlogic.gdx.graphics.GLCommon; 
import com.badlogic.gdx.graphics.OrthographicCamera; 
import com.badlogic.gdx.graphics.Texture; 
import com.badlogic.gdx.graphics.g2d.SpriteBatch; 
import com.badlogic.gdx.graphics.g2d.TextureAtlas; 
import com.shooter.waste.of.a.game.Assets; 
import com.shooter.waste.of.a.game.utils.Game; 
import com.shooter.waste.of.a.game.utils.Screen; 

public class LoadingScreen extends Screen{ 


public AssetManager manager; 
SpriteBatch batcher; 
Game game; 
OrthographicCamera cam; 
TextureAtlas load; 
float stateTime; 
AtlasSprite bg; 
public LoadingScreen(Game game,SpriteBatch batcher) { 
    super(game); 
    this.batcher = batcher; 
    this.game = game; 
    manager = new AssetManager(); 
    manager.load("data/shoot",TextureAtlas.class); 
    manager.load("data/b.jpg",Texture.class); 

    cam = new OrthographicCamera(480, 800); 
    cam.position.set(480/2, 800/2,0); 
      load = new TextureAtlas("data/load"); 
      bg = new AtlasSprite(load.findRegion("loadingscrnbg")); 




    } 

    @Override 
    public void render(float deltaTime) 
    { 
     update(deltaTime); 
    GLCommon gl = Gdx.gl; 
    gl.glClearColor(0, 0, 1f, 0.1f); 
    gl.glClear(GL10.GL_COLOR_BUFFER_BIT); 
    cam.update(); 
    batcher.setProjectionMatrix(cam.combined); 
    batcher.begin(); 
      batcher.draw(bg, 0, 0); 

    batcher.enableBlending(); 
    batcher.end(); 



} 

@Override 
public void pause() { 
    // TODO Auto-generated method stub 

} 

@Override 
public void resume() { 
    // TODO Auto-generated method stub 

} 

@Override 
public void dispose() { 
    // TODO Auto-generated method stub 

} 

@Override 
public void update(float deltaTime) 
{ 
    if(manager.update()) \\ gives true when all assets are loaded 
    { 
     Assets.load(manager); 
     game.setScreen(new GameScreen(game, batcher)); 
    } 
} 

@Override 
public void backKeyPressed() { 
    // TODO Auto-generated method stub 

} 


} 

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

Надеюсь, что это поможет вам избежать.

+0

Круто. Это решает мою проблему. Большое спасибо брату ... :) –

0

все, что вы можете сделать, это вы можете добавить loadng экран в начале вашей игры и можете сыграть какую-то музыку в это время.

таким образом пользователь будет знать, что игра загружается .. нагрузки все ваши assests на этом экране и показать прогресс Barr ...

Смежные вопросы