首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 游戏天堂 > 游戏开发 > 游戏中动画的基础
【标  题】:游戏中动画的基础
【关键字】:
【来  源】:http://blog.csdn.net/gooogledev/archive/2007/03/26/1541277.aspx

游戏中动画的基础

 http://googledev.blog.hexun.com/8315619_d.html




 这篇文章是纯粹的个人看法。
游戏的基础是动画,想来大家都知道。这几天公司的项目都忙完了。很是无聊,所以就上网找了些资源,并写两个动画的例子。在此贴出来,让大家把砖头砸我吧。^_^
j2me midp2.0有个game的包是用来设计有游戏用的。它提供了游戏设计的基础控件,比如双缓冲,精灵,图层控制器等基础设施,这些设施可以方便我们的设计,比如双缓冲可以让游戏执行流畅,精灵等,可以更好的控制角色。
说白了。动画的效果其实就是一幅幅图片按照指定的时间一幅幅的换图片而已。
好了。看代码吧。

 

java 代码

  1. package org.wuhua.game.timer;

  2. import java.util.Timer;
  3. import java.util.TimerTask;

  4. /**
  5. * 对Timer的包装
  6. * @author wuhua
  7. */
  8. public class TimerTaskManager {
  9. private Timer _timer;

  10. static TimerTaskManager instace;

  11. public static TimerTaskManager getInstace() {
  12. if (instace == null )
  13. instace = new TimerTaskManager();
  14. return instace;
  15. }

  16. public TimerTask add(Runnable runnable, long period) {
  17. TimerTask task = new RunnableTimerTask(runnable);
  18. long delay = period;
  19. getTimer().schedule(task, delay, period);
  20. return task;
  21. }

  22. void close() {
  23. if (_timer != null ) {
  24. _timer.cancel();
  25. _timer = null;
  26. }
  27. }

  28. private Timer getTimer() {
  29. if (_timer == null )
  30. _timer = new Timer();
  31. return _timer;
  32. }

  33. static class RunnableTimerTask extends TimerTask {
  34. private Runnable _runnable;

  35. RunnableTimerTask(Runnable runnable) {
  36. _runnable = runnable;
  37. }

  38. public void run() {
  39. _runnable.run();
  40. }
  41. }
  42. }
java 代码

  1. package org.wuhua.game;

  2. import java.io.IOException;
  3. import java.util.TimerTask;

  4. import javax.microedition.lcdui.Canvas;
  5. import javax.microedition.lcdui.Graphics;
  6. import javax.microedition.lcdui.Image;

  7. import org.wuhua.game.timer.TimerTaskManager;



  8. /**
  9. * 动画的主类
  10. * @author wuhua
  11. */
  12. public class Game extends Canvas implements Runnable{

  13. private Image source;
  14. private Image action[] = new Image[ 10 ];
  15. private int bgcolor = 0x209C00 ;
  16. private TimerTask task;
  17. private static int next;
  18. Game(){
  19. try {
  20. source = Image.createImage("/action.png");
  21. } catch (IOException e) {

  22. e.printStackTrace();
  23. }
  24. //切割图片
  25. for ( int i= 0 ; i< 5 ; i++){
  26. action[i] = Image.createImage(source, 96*i, 0, 96, 60, 0);
  27. }

  28. for ( int j= 5 ; j< 10 ; j++){
  29. action[j] = Image.createImage(source, 96*(j-5), 102, 96, 80, 0);
  30. }

  31. //这个是用来执行动作的计时器。原理是要求经过0.2毫秒动一次
  32. task = TimerTaskManager.getInstace().add(this, 150);
  33. }
  34. protected void paint(Graphics g) {
  35. fillScreen(g);
  36. paintAction(g);

  37. }
  38. private void fillScreen(Graphics g) {
  39. g.setColor(0xFFFFFF);
  40. g.fillRect(0, 0, this.getWidth(), this.getHeight());

  41. }
  42. private void paintAction(Graphics g) {
  43. if (next == 10 )
  44. next =0;
  45. //如果绘制的图片是出雷电的时候,让人物停留在那里。这样的效果会好点
  46. if (next>= 5 ){
  47. g.drawImage(action[4], 10*4, 0, Graphics.LEFT|Graphics.TOP);
  48. }
  49. g.drawImage(action[next], 10*next, 0, Graphics.LEFT|Graphics.TOP);


  50. next++;

  51. }
  52. public void run() {
  53. repaint();

  54. }



  55. }
 
3D projection -- From Wikipedia, the free encyclopedia(靠,wiki国内看不到,让牛哥帮我保存好网页传过来的):【上一篇】
XNA Kick Start (五):【下一篇】
【相关文章】
没有相关文章
【随机文章】
  • sco 5.0.5上安装j2sdk
  • 我对MFC的理解
  • Sun L25磁带库维护一例
  • Servlet与JSP隐含对象的对应关系
  • oracle分析函数
  • Sql的日志维护
  • 利用 Case 敘述做 SQL 的動態排列
  • C++的iostream标准库介绍
  • 在MFC中使用EXCEL API (二)
  • 我自己装的HTTP服务器(PostgreSQL+apache+php4)
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.