2017-03-14 1 views
0

Ich habe einen Spiel-Thread, der auf der Oberfläche zieht. Es verarbeitet Spielvariablen und zeichnet dann auf Leinwand. Board ist ein Bitmap, das auf der Leinwand der Ansicht gezeichnet werden würde. callDrawHelper zieht an Bord zurück, zuerst einfach Hintergrund Bild (gleiche Größe wie Board). Die Cluster-Liste enthält dann eine Reihe von Bildern, die basierend auf Spielvariablen-Daten auf der Leinwand gezeichnet werden. Dieser gesamte Prozess führt jeden Frame aus.Verbessere die Leistung von drawBitmap und Frame-Rate von Spiel thread (Android)

callDrawHelper dauert 80 Millisekunden schließen, was höchste Komponenten Fadenverarbeitung ist. Dies senkt auch die Bildrate. Wie kann ich die Leistung dieses Codesegments verbessern?

protected void callDrawHelper() { 

    Canvas gfx = drawJustBackground(); 
     for (int i = 0; i < clusters.size(); i++) { 

      PieceCluster cluster = clusters.get(i); 
      if (cluster.isVisible) { 
       gfx.drawBitmap(cluster.Picture, cluster.BoardLocation.left, 
         cluster.BoardLocation.top, null); 
      } 
     } 


} 

protected Canvas drawJustBackground() { 
    Canvas gfx = new Canvas(board); 
    gfx.drawBitmap(background, 0, 0, null); 
    return gfx; 
} 

Antwort

Verwandte Themen