Advertisement
Guest User

Animator

a guest
Aug 13th, 2011
250
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.42 KB | None | 0 0
  1.     /**
  2.      * Obiekt używany do wymuszenia przerysowania: renderLock.notify()
  3.      */
  4.     final Object renderLock=new Object();
  5.     /**
  6.      * Klasa która czekając na notyfikacje z renderLock wywołuje przerysowania
  7.      * gdy są potrzebne
  8.      */
  9.     class Renderer extends Thread {
  10.         Flowchart flow;
  11.         public Renderer(Flowchart flow) {
  12.             this.flow = flow;
  13.             this.setName("Flowchart renderer");
  14.         }
  15.         /**
  16.          * Przerysowuje scenę
  17.          */
  18.         Runnable timer=new Runnable(){
  19.             @Override
  20.             public void run() {
  21.                 flow.flow.repaint();
  22.             }
  23.         };
  24.        
  25.         @Override
  26.         public void run(){
  27.             synchronized (renderLock){
  28.                 try {
  29.                     while(rendering){ //Dopóki ma w ogóle rysować
  30.                         SwingUtilities.invokeLater(timer); //przerysuj
  31.                         if(animatedElements.size()>0) //jeśli są elementy, które są animowane
  32.                             renderLock.wait(35); //czeka 35ms i przerysowuje jeszcze raz
  33.                         else //jeśli nie
  34.                             renderLock.wait(); //czeka do notyfikcacji
  35.                     }
  36.                 } catch (Exception ex) {
  37.                     Logger.getLogger(Renderer.class.getName()).log(Level.SEVERE, null, ex);
  38.                 }
  39.             }
  40.         }
  41.     };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement