盾怪网教程:是一个免费提供流行杀毒软件教程、在线学习分享的学习平台!

用J2ME在移动设备上完成动画

时间:2024/12/18作者:未知来源:盾怪网教程人气:

[摘要]Graphics.TOP );   ;  ; ;   AnimatedCanvas 类的代码相当简单,由一个动画导入方法和一个paint方法。canvas画布每次被画,背景都会被擦除然后循环每个导入...
Graphics.TOP );
  };
 };
};

  AnimatedCanvas 类的代码相当简单,由一个动画导入方法和一个paint方法。canvas画布每次被画,背景都会被擦除然后循环每个导入的AnimatedImage对象,直接画到自己身上来(自己扩展了canvas类)。

import java.io.*;
import java.util.*;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;

// MIDlet that displays some simple animations.
// Displays a series of birds on the screen and
// animates them at different (random) rates.

public class AnimationTest extends MIDlet
implements CommandListener {;

 private static final int BIRD_FRAMES = 7;
 private static final int NUM_BIRDS = 5;

 private Display display;
 private Timer timer = new Timer();
 private AnimatedImage[] birds;
 private Random random = new Random();

 public static final Command exitCommand = new Command( "Exit",Command.EXIT, 1 );
 public AnimationTest(){; };

 public void commandAction( Command c,Displayable d ){;
  if( c == exitCommand ){;
   exitMIDlet();
  };
 };

 protected void destroyApp( boolean unconditional )
  throws MIDletStateChangeException {;
   exitMIDlet();
  };

 public void exitMIDlet(){;
  timer.cancel(); // turn it off...
  notifyDestroyed();
 };

 // Generate a non-negative random number...

 private int genRandom( int upper ){;
  return( Math.abs( random.nextInt() ) % upper );
 };

 public Display getDisplay(){; return display; };

 // Initialize things by creating the canvas and then
 // creating a series of birds that are moved to
 // random locations on the canvas and attached to
 // a timer for scheduling.

 protected void initMIDlet(){;
  try {;
   AnimatedCanvas c = new
   AnimatedCanvas( getDisplay() );
   Image[] images =loadFrames( "/images/bird", BIRD_FRAMES );

   int w = c.getWidth();
   int h = c.getHeight();

   birds = new AnimatedImage[ NUM_BIRDS ];
   for( int i = 0; i < NUM_BIRDS; ++i ){;
    AnimatedImage b = new
    AnimatedImage( c, images );
    birds = b;
    b.move( genRandom( w ), genRandom( h ) );
    c.add( b );
    timer.schedule( b, genRandom( 1000 ),genRandom( 400 ) );
   };

   c.addCommand( exitCommand );
   c.setCommandListener( this );

   getDisplay().setCurrent( c );
  };
  catch( IOException e ){;
   System.out.println( "Could not load images" );
   exitMIDlet();
  };
 };

 // Load the bird animation, which is stored as a
 // series of PNG files in the MIDlet suite.

 private Image[] loadFrames( String name, int frames )
 throws IOException {;
  Image[] images = new Image[frames];
  for( int i = 0; i < frames; ++i ){;
   images = Image.createImage( name + i + ".png" );
  };

  return images;
 };

 protected void pauseApp(){; };

 protected void startApp()
 throws MIDletStateChangeException {;
  if( display == null ){;
   display = Display.getDisplay( this );
   initMIDlet();
  };
 };
};

  七帧图片的动画,你可以看到一个拍着翅膀的小鸟。MIDlet显示了5只小鸟,小鸟的位置和刷新速度是随机的。你可以用一些其他的办法来改进这个程序,但这个程序也应该足够能让你上手了。



关键词:用J2ME在移动设备上完成动画




Copyright © 2012-2018 盾怪网教程(http://www.dunguai.com) .All Rights Reserved 网站地图 友情链接

免责声明:本站资源均来自互联网收集 如有侵犯到您利益的地方请及时联系管理删除,敬请见谅!

QQ:1006262270   邮箱:kfyvi376850063@126.com   手机版