Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /* 
   * Copyright 2011 Cologne University of Applied Sciences Licensed under the
   * Educational Community License, Version 2.0 (the "License"); you may
   * not use this file except in compliance with the License. You may
   * obtain a copy of the License at
   *
   * http://www.osedu.org/licenses/ECL-2.0
   *
   * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an "AS IS"
  * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
  * or implied. See the License for the specific language governing
  * permissions and limitations under the License.
  */
 package org.amcgala.framework.animation;
 
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;

Diese Klasse kümmert sich um das Timing der Animation. Sie ruft in regelmäßigen Abständen die Methoden update und show der Klasse Framework auf und ermöglicht so die Realisation von Animationen.

Author(s):
Robert Giacinto
 
 public class Animator {
 
     private static final Logger log = LoggerFactory.getLogger(Animator.class);
     private Timer fpsTimer;
     private Timer upsTimer;
     private Framework framework;
     private int framesPerSecond;
     private int updatesPerSecond;
     private Thread animation;
     private boolean running;

    
Erzeugt einen neuen Animator, der das Framework aktualisiert.

Parameters:
framesPerSecond die Anzahl der Bilder pro Sekunde
updatesPerSecond die Anzahl der Aktualisierungen pro Sekunde
 
     public Animator(int framesPerSecondint updatesPerSecond) {
         checkArgument(framesPerSecond > 0, "FPS muss größer 0 sein!");
         checkArgument(updatesPerSecond > 0, "UPS muss größer 0 sein!");
 
         this. = framesPerSecond;
         this. = updatesPerSecond;
          = new Timer(framesPerSecond);
          = new Timer(updatesPerSecond);
     }

    
Ändert das Framework, das von dem Animator aktualisiert wird.

Parameters:
framework das neue Framework
 
     public void setFramework(Framework framework) {
         this. = checkNotNull(framework);
     }

    
GIbt die Anzahl der Aktualisierungen zurück.

Returns:
die Anzahl der Aktualsierungen pro Sekunde
 
     public int getFramesPerSecond() {
         return ;
     }

    
Ändert die Anzahl der Aktualisierungen pro Sekunde.

Parameters:
framesPerSecond die neue Anzahl von Aktualisierungen pro Sekunde
 
     public void setFramesPerSecond(int framesPerSecond) {
         checkArgument(framesPerSecond > 0, "FPS muss größer 0 sein!");
 
         this. = framesPerSecond;
          = new Timer(framesPerSecond);
     }

    
Startet den Animator.
 
     public void start() {
          = true;
         if ( != null) {
              = new Thread(new Runnable() {
 
                 @Override
                 public void run() {
                     double fpsLastTime = System.nanoTime();
                     double upsLastTime = System.nanoTime();
                    int upsCounter = 0;
                    int fpsCounter = 0;
                    int unprocessed = 1;
                    double last = System.nanoTime();
                    boolean render = true;
                    while () {
                        double now = System.nanoTime();
                        unprocessed += (now - last) / .getTimePerFrame();
                        .start();
                        while (unprocessed > 0) {
                            upsCounter++;
                            unprocessed--;
                            .update();
                            last = System.nanoTime();
                            render = true;
                        }
                        fpsCounter++;
                        if (render) {
                            .show();
                            render = false;
                        }
                        .stop();
                        try {
                            Thread.sleep((long.getSleepTime());
                        } catch (InterruptedException e) {
                        }
                        if (System.nanoTime() - fpsLastTime > 1000000000) {
                            .debug("FPS = {}"fpsCounter);
                            fpsCounter = 0;
                            fpsLastTime = System.nanoTime();
                        }
                        if (System.nanoTime() - upsLastTime > 1000000000) {
                            .debug("UPS = {}"upsCounter);
                            upsCounter = 0;
                            upsLastTime = System.nanoTime();
                        }
                    }
                }
            });
            .start();
        }
    }

    
Hält das Framework an und zeigt das letzte gerenderte Bild an.
    public void stop() {
         = false;
        .update();
        .show();
    }
New to GrepCode? Check out our FAQ X