Android Open Source - Hungry-Mouse Animation






From Project

Back to project page Hungry-Mouse.

License

The source code is released under:

MIT License

If you think the Android project Hungry-Mouse listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

//Name:   Animation.java
//Purpose:  display different images in sequence based on the duration specified
// w  ww  .j a v  a 2s  .c  om
package com.hungry.mouse.main;

import com.hungry.mouse.framework.Image;

//java libraries
import java.util.ArrayList;//implementation of list with additional operations add,remove,replace

public class Animation {

  //local variables
  private ArrayList frames;//contain animframe objects
  private int currentFrame;//numerical location in the list
  //long is more accurate than int
  private long animTime;//keep track of time elapsed since last image
  private long totalDuration;//how long each image will be displayed

  //constructor
  public Animation() {
    frames = new ArrayList();
    totalDuration = 0;
    
    //threads are called together
    synchronized (this) {
      animTime = 0;
      currentFrame = 0;
    }
  }

  //add animframe object to animation list
  //threads are called together
  public synchronized void addFrame(Image image, long duration) {
    totalDuration += duration;
    frames.add(new AnimFrame(image, totalDuration));
  }

  //update current frame with its appropriate image
  public synchronized void update(long elapsedTime) {
    if (frames.size() > 1) {
      
      //add elapsed time to anime time
      animTime += elapsedTime;
      
      //if animation time exceeds total duration we change frame
      if (animTime >= totalDuration) {
        animTime = animTime % totalDuration;
        currentFrame = 0;

      }

      while (animTime > getFrame(currentFrame).endTime) {
        currentFrame++;

      }
    }
  }
  
  //get current frame`s image to paint(present) it
  //threads are called together  
  public synchronized Image getImage() {
    if (frames.size() == 0) {
      return null;
    } else {
      return getFrame(currentFrame).image;
    }
  }

  //get the frame`s location from the list
  private AnimFrame getFrame(int i) {
    return (AnimFrame) frames.get(i);
  }

  //create objects to contain current images and duration to be displayed
  private class AnimFrame {

    Image image;
    long endTime;
    
    //nested class
    public AnimFrame(Image image, long endTime) {
      this.image = image;
      this.endTime = endTime;//the end time to be displayed
    }
  }
}




Java Source Code List

com.hungry.mouse.framework.Audio.java
com.hungry.mouse.framework.FileIO.java
com.hungry.mouse.framework.Game.java
com.hungry.mouse.framework.Graphics.java
com.hungry.mouse.framework.Image.java
com.hungry.mouse.framework.Input.java
com.hungry.mouse.framework.Music.java
com.hungry.mouse.framework.Pool.java
com.hungry.mouse.framework.Screen.java
com.hungry.mouse.framework.Sound.java
com.hungry.mouse.framework.implementation.AccelerometerHandler.java
com.hungry.mouse.framework.implementation.AndroidAudio.java
com.hungry.mouse.framework.implementation.AndroidFastRenderView.java
com.hungry.mouse.framework.implementation.AndroidFileIO.java
com.hungry.mouse.framework.implementation.AndroidGame.java
com.hungry.mouse.framework.implementation.AndroidGraphics.java
com.hungry.mouse.framework.implementation.AndroidImage.java
com.hungry.mouse.framework.implementation.AndroidInput.java
com.hungry.mouse.framework.implementation.AndroidMusic.java
com.hungry.mouse.framework.implementation.AndroidSound.java
com.hungry.mouse.framework.implementation.MultiTouchHandler.java
com.hungry.mouse.framework.implementation.SingleTouchHandler.java
com.hungry.mouse.framework.implementation.TouchHandler.java
com.hungry.mouse.main.AboutScreen.java
com.hungry.mouse.main.Animation.java
com.hungry.mouse.main.Assets.java
com.hungry.mouse.main.Background.java
com.hungry.mouse.main.Bomb.java
com.hungry.mouse.main.Cheese.java
com.hungry.mouse.main.Enemy.java
com.hungry.mouse.main.GameScreen.java
com.hungry.mouse.main.HelpScreen1.java
com.hungry.mouse.main.HelpScreen2.java
com.hungry.mouse.main.HelpScreen3.java
com.hungry.mouse.main.HelpScreen4.java
com.hungry.mouse.main.Kamikazi.java
com.hungry.mouse.main.LevelSelectorScreen.java
com.hungry.mouse.main.LoadingScreen.java
com.hungry.mouse.main.MainMenuScreen.java
com.hungry.mouse.main.Mouse.java
com.hungry.mouse.main.Projectile.java
com.hungry.mouse.main.Rewards.java
com.hungry.mouse.main.SampleGame.java
com.hungry.mouse.main.Settings.java
com.hungry.mouse.main.Sign.java
com.hungry.mouse.main.SplashLoadingScreen.java
com.hungry.mouse.main.Tile.java