Home J2me J2ME Animation using repaint( ) method
Questions:Ask|Latest


 
 

Share on Google+Share on Google+

J2ME Animation using repaint( ) method

Advertisement
In this part of J2ME Image Tutorial, we are going to show you how to create an Image with animation. Here we have create a class called ImageAanimation that extends MIDlet and implements the CommandListner class.

J2ME Animation using repaint( ) method

     

In this part of J2ME Image Tutorial, we are going to show you how to create an Image with animation. Here we have create a class called ImageAanimation that extends MIDlet and implements the CommandListner class. We have also used the predefined Canvas class to show the animation and image. For this, we have created a ImageCanvas2 class that extends the Canvas class to draw the animation and blink the image for a given period of time. To draw the image we are using the following methods:

  • image = Image.createImage("/cartoondog.png");   
  • frame_width = image.getWidth();   
  • frame_height = image.getHeight();

 

 

 

And when image created then we can appear this image using this methods:

while(run_thread){
 Thread.sleep((frame_index == Frame_Count - 1) ? 
   Last_Frame_Count : Frame_Hold);

 int last_frame_index = frame_index;
 frame_index = (frame_index + 1) % Frame_Count;
 int repaint_left = position[last_frame_index];
 int repaint_right = position[frame_index];
  
 if(position[last_frame_index] > position[frame_index]){
 repaint_left = position[frame_index];
 repaint_right = position[last_frame_index];
 }
 repaint_left = (repaint_left * run_length) >> 10;
 repaint_right = (repaint_right * run_length) >> 10;
 repaint(repaint_left, 0, frame_width + repaint_right - 
   repaint_left, frame_height);

}

The Application is as follows:

Source Code ImageAnimation.java

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class ImageAnimation extends MIDlet implements CommandListener{
  private Display  display;
  private Command exit;
  
  protected void startApp(){
  display = Display.getDisplay(this);
  ImageCanvas2 canvas = new ImageCanvas2();
  exit = new Command("Exit", Command.EXIT, 1);
  canvas.addCommand(exit);
  canvas.setCommandListener(this);
  display.setCurrent(canvas);
  }
  
  protected void pauseApp(){}
  
  protected void destroyApp(boolean unconditional){
  notifyDestroyed();
  }
  
  public void commandAction(Command c, Displayable d){
  String label = c.getLabel();
  if(label.equals("Exit")) {
  destroyApp(true);
  }
  }
}

class ImageCanvas2 extends Canvas implements Runnable{
  int Frame_Count = 17;
  int Frame_Hold = 70000;
  int Last_Frame_Count = 300;
  int[] position = {
  0, 50, 186, 372, 558, 744, 930, 1024, 1024,
  834, 651, 465, 279, 93, 0, 0, 0};
  
  private Image image;
  int frame_width = 0;
  int frame_height = 0;
  int frame_index = 0;
  int run_length = 0;
  boolean run_thread = false;

  protected void showNotify(){
  try{
  image = Image.createImage("/cartoondog.png");
  frame_width = image.getWidth();
  frame_height = image.getHeight();
  } catch (Exception ioe) {
  return;
  }
  run_length = getWidth() - frame_width;
  run_thread = true;
  frame_index = 0;
  new Thread(this).start();
  }

  protected void hideNotify(){
  run_thread = false;
  }

  public void run(){
  try{
  while(run_thread){
  Thread.sleep((frame_index == Frame_Count - 1) ? 
  Last_Frame_Count : Frame_Hold);
  int last_frame_index = frame_index;
  frame_index = (frame_index + 1) % Frame_Count;
  int repaint_left = position[last_frame_index];
  int repaint_right = position[frame_index];
  
  if(position[last_frame_index] > position[frame_index]){
  repaint_left = position[frame_index];
  repaint_right = position[last_frame_index];
  }
  repaint_left = (repaint_left * run_length) >> 10;
  repaint_right = (repaint_right * run_length) >> 10;
  repaint(repaint_left, 0, frame_width + repaint_right - 
  repaint_left, frame_height);
  }
  }catch(Exception e){}
  }

  public void paint(Graphics g){
  g.setColor(0, 0, 255);
  g.fillRect(0, 0, getWidth(), getHeight());
  g.translate((position[frame_index] * run_length) >> 10, 0);
  g.clipRect(0, 0, frame_width, frame_height);
  g.drawImage(image, 0, -(frame_index * frame_height), 
  Graphics.LEFT + Graphics.TOP);
  }
} 

Download Source Code

Advertisements

If you enjoyed this post then why not add us on Google+? Add us to your Circles



Liked it!  Share this Tutorial


Follow us on Twitter, or add us on Facebook or Google Plus to keep you updated with the recent trends of Java and other open source platforms.

Posted on: November 15, 2008

Ask Questions?    Discuss: J2ME Animation using repaint( ) method  

Post your Comment


Your Name (*) :
Your Email :
Subject (*):
Your Comment (*):
  Reload Image
 
 
Comments
menpara bhargavi
February 1, 2013
j2me

i like this subject
Mamta
February 2, 2012
about j2me animatin in tybca lavel

clear all defination at bca lavle i am very happy for your visited website
Subhajit
April 29, 2012
image?

where is the image file
DMCA.com