2017-07-18 5 views
0

私のゲームでは25レベルあり、前のゲームが完了すると自動的に読み込まれます。 プレイボタンをクリックしてゲームを開始すると、ゲーム画面にJSONの障害物が表示されています。しかし、ゲームがちょうど始まったときにはじめてジャークが起こる。JSONレベルがロードされているときにゲームに初期ジャークがあります-LibGdx

は、これは私がレベルのJSONの解析を行っています私のクラスである:

public class ObstacleFactory { 

    public static Array<Obstacle> obstacles1 = new Array<Obstacle>(); 
    public static Array<String> names = new Array<String>(); 

    public ObstacleFactory() { 
    } 

    public static void loadJsonLevels(String fileName) { 
     JsonValue jsonValue = new JsonReader().parse(Gdx.files.internal(fileName)); 
     JsonValue nameValue = jsonValue.get("obstacles"); 
     for (JsonValue value : nameValue.iterator()) { 

      System.out.println(nameValue); 

      if (value.getString("name").equals("rock")) { 
       obstacles1.add(new Obstacle()); 
       obstacles1.get(obstacles1.size - 1).setName(value.getString("name")); 
       obstacles1.get(obstacles1.size - 1).setDistance(value.getFloat("distance")); 
       obstacles1.get(obstacles1.size - 1).setPos(value.getString("position")); 
       obstacles1.get(obstacles1.size - 1).setSpeed(value.getFloat("speed")); 
       if (value.getString("position").equals("middle")) 
        obstacles1.get(obstacles1.size - 1).setPosition(value.getFloat("distance"), Constants.BIG_ROCK_Y); 
       obstacles1.get(obstacles1.size - 1).setSize(Constants.ROCK_WIDTH, Constants.ROCK_HEIGHT); 

       names.add(value.getString("name")); 
      } 
      if (value.getString("name").equals("gorilla")) { 
       obstacles1.add(new Obstacle()); 
       obstacles1.get(obstacles1.size - 1).setName(value.getString("name")); 
       obstacles1.get(obstacles1.size - 1).setDistance(value.getFloat("distance")); 
       obstacles1.get(obstacles1.size - 1).setPos(value.getString("position")); 
       obstacles1.get(obstacles1.size - 1).setSpeed(value.getFloat("speed")); 
       if (value.getString("position").equals("middle")) 
        obstacles1.get(obstacles1.size - 1).setPosition(value.getFloat("distance"), Constants.GORILLA_Y); 
       obstacles1.get(obstacles1.size - 1).setSize(Constants.GORILLA_WIDTH, Constants.GORILLA_HEIGHT); 

       names.add(value.getString("name")); 

      } 
    // ------------other obstacles 
     // -------------other obstacles 

       names.add(value.getString("name")); 
      } 
     } 
     } 
    } 

このloadJsonLevels()私は障害物のために、すべてのgamelogic、およびテクスチャロードを書いている私は(GameScreenクラスで呼び出していますJSONや他のゲームオブジェクトから)コンストラクタこのような:。

ObstacleFactory.loadJsonLevels("levels/level1.json"); 
ObstacleFactory.loadJsonLevels("levels/level2.json"); 

私が開始、またはゲームを再起動するたびに、このジャークがあり、それは迷惑ですので、削除する必要があります。

この問題の考えられる原因は何ですか?

このloadJsonLevel()を呼び出すと、このジャークが発生するため、jsonの解析とレベルの読み込みに関するコードを投稿しました。私がコメントした場合、ジャークはありません。

私は、この問題を克服するためのいくつかの有益な提案を得ることができれば幸いです。

ありがとうございます。

答えて

0

データが完全に読み込まれる前に、画面が表示され始めている可能性があります。

ファイルやネットワークを開いたり、読み書きしたりするにはかなり高価です(または、特に低リソースデバイスで)。 メインの表示スレッドではそのようにしたくないので、画面の描画中は実行したくありません。 そのカットシーンやユーザーが数秒待つのを待つのは良い理由です。

関連する問題