`
wuhua
  • 浏览: 2110999 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

游戏中动画的基础

阅读更多
全文请看
游戏中动画的基础
这篇文章是纯粹的个人看法。
游戏的基础是动画,想来大家都知道。这几天公司的项目都忙完了。很是无聊,所以就上网找了些资源,并写两个动画的例子。在此贴出来,让大家把砖头砸我吧。^_^
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. }
  • 大小: 6.7 KB
  • 大小: 182.3 KB
分享到:
评论
16 楼 wuhua 2006-12-01  
哈哈。我刚才也看了你的那个游戏,感觉不错。
15 楼 fins 2006-12-01  
在这里遇到喜欢游戏编程的不容易啊 呵呵
又搞游戏 又j2ee的人不多 加你做好友了  快通过啊 呵呵
14 楼 whycloud 2006-11-29  
我那个完成主体的是一个射箭的游戏,就实现了一个抛物飞行,一个计算环数
等有时间的时候整理一下发出来吧
13 楼 wuhua 2006-11-29  
whycloud 写道
wuhua 写道
哈哈。楼上的你自己实现过双缓冲码?
实现是不是先创建一个可绘制的Image,然后在上面做些事情啊。
对了。你有设计游戏码

是的,就是你说的那样
不过我自己没手动在J2ME上实现过,在J2SE上做过
游戏设计过两个都是3D方面的一个游戏主体完成了
另一个做到一半的时候硬盘坏掉了,弄的本来说好要把第二个弄完给mingjava做教程的,最后也没完成……
我以前也写过一个玛丽赛跑的游戏,那个游戏很弱智的。而起碰撞算法实现的不好。机会是没碰到就倒下了。
12 楼 whycloud 2006-11-29  
wuhua 写道
哈哈。楼上的你自己实现过双缓冲码?
实现是不是先创建一个可绘制的Image,然后在上面做些事情啊。
对了。你有设计游戏码

是的,就是你说的那样
不过我自己没手动在J2ME上实现过,在J2SE上做过
游戏设计过两个都是3D方面的一个游戏主体完成了
另一个做到一半的时候硬盘坏掉了,弄的本来说好要把第二个弄完给mingjava做教程的,最后也没完成……
11 楼 lordhong 2006-11-29  
基本上REPAINT()需要改变的GRAPHICS的部分.
去年做了几个业余的很弱智的游戏...MOTO V3上测试过... 在CSDN还被发在首页连接上... =.=# 爆汗...
10 楼 wuhua 2006-11-28  
哈哈。楼上的你自己实现过双缓冲码?
实现是不是先创建一个可绘制的Image,然后在上面做些事情啊。
对了。你有设计游戏码
9 楼 wuhua 2006-11-28  
哈哈。楼上的你自己实现过双缓冲码?
实现是不是先创建一个可绘制的Image,然后在上面做些事情啊。
对了。你有设计游戏码
8 楼 whycloud 2006-11-28  
wuhua 写道
whycloud 写道
忘记一点,在MIDP2中可以设置关于双缓冲的。但是在MIDP规范中并没有强制要求一定要设备支持,所以如果是MIDP2设置双缓冲的话,一定要判断设备是否支持


对了。兄台可以在这里加上一段关于怎么判断是否支持双缓冲码?

刚一问还真想了半天,现在想起来了
在midp2中Canvas有一个public boolean isDoubleBuffered()方法来判断该设备是否支持二重缓冲,如果不支持还是需要手动实现的
7 楼 wuhua 2006-11-28  
恩。好的。让大家也学习学习
6 楼 whycloud 2006-11-28  
恩,我回去找找,那个FoxDown的教程回头发到圈子里吧
不过那个一直就没找到作者
5 楼 半路出家 2006-11-28  
wuhua 写道
对啊。上面的例子我并没有用到game的包。
都是在Canvas中绘制的。
其实自己都可以实现双缓冲功能。只是看看有没有这个必要。
呵呵
4 楼 wuhua 2006-11-28  
whycloud 写道
忘记一点,在MIDP2中可以设置关于双缓冲的。但是在MIDP规范中并没有强制要求一定要设备支持,所以如果是MIDP2设置双缓冲的话,一定要判断设备是否支持


对了。兄台可以在这里加上一段关于怎么判断是否支持双缓冲码?
3 楼 wuhua 2006-11-28  
对啊。上面的例子我并没有用到game的包。
都是在Canvas中绘制的。
其实自己都可以实现双缓冲功能。只是看看有没有这个必要。
呵呵
2 楼 whycloud 2006-11-28  
忘记一点,在MIDP2中可以设置关于双缓冲的。但是在MIDP规范中并没有强制要求一定要设备支持,所以如果是MIDP2设置双缓冲的话,一定要判断设备是否支持
1 楼 whycloud 2006-11-28  
我怎么感觉这里面没有用到GAME包呢?
这效果我觉得有一个非常的好的教程代码
是那个foxdonw的教程,如果用GAME包的话那个
有一个做"撑过20秒"的教程也非常有帮助

相关推荐

    android游戏开场动画源代码

    在Android平台上,游戏开发是一个非常活跃的领域,各种各样的游戏层出不穷。《Abduction》是一款深受...同时,深入分析和实践这样的源代码,也能帮助开发者提升解决问题的能力,为开发自己的游戏作品打下坚实的基础。

    3dsmax游戏角色动画师教程——Max动画基础01基础技巧

    3DMAX游戏角色动画师教程(腾飞老师亲讲)【价值300元】3dsmax游戏角色动画师教程【Max动画基础01基础技巧】——3dmax游戏角色动画教程,3dmax初学入门,下载,系统全面的3dmax教程,从基础到高级,大量高端案例教程,学3d...

    游戏动画设计基础.md

    1.基础绑定讲解 2.角色骨骼搭建 3.角色权重调整 课程目标: 1.掌握骨骼结构,权重原理 2.骨骼工具,重命名工具 3.绑定的提交规范 4.更加熟练绑定的技巧 想要了解更多的小伙伴可以搜索艺点动画科技有限公司...

    HTML5+JavaScript动画基础(文本+源码)

    在“HTML5+JavaScript动画基础”这个主题中,我们深入探讨如何利用这两者构建引人入胜的动画效果。 首先,HTML5新增了许多元素和API,如canvas标签,它提供了一个画布,允许开发者通过JavaScript绘制图形并实现动态...

    《HTML5+JavaScript动画基础》源代码

    在《HTML5+JavaScript动画基础》一书中,作者深入浅出地讲解了如何利用这两者来构建吸引人的动画和游戏。下面,我们将探讨这个主题中涉及的一些关键知识点。 1. **HTML5新特性**: HTML5是HTML的最新版本,引入了...

    HTML5+JavaScript动画基础(中文完整版)

    HTML5+JavaScript动画基础(中文完整版)

    游戏动画基础 行走的恐龙

    游戏动画基础是游戏开发中的重要组成部分,特别是在2D和3D游戏中,动态的角色和环境能够极大地提升玩家的沉浸感和游戏体验。本知识点主要聚焦于“行走的恐龙”这一主题,通过WIN32 SDK(Windows API)来实现游戏动画...

    山东大学2012级计算机动画技术基础试题

    ### 计算机动画技术基础 #### 1. 基本概念 - **计算机动画**: 是指利用计算机技术来创建动态图像的技术领域。它涉及到图形学、物理模拟、艺术设计等多个方面。 - **计算机动画技术**: 指的是用于制作动画的各种技术...

    HTML5+JavaScript 动画基础 2013年出版423页

    《HTML5+JavaScript动画基础》包括了基础知识、基础动画、高级动画、3D动画和其他技术5大部分,分别介绍了动画的基本概念、动画的JavaScript基础、动画中的三角学、渲染技术、速度向量和加速度、边界与摩擦力、用户...

    游戏角色动画实现.docx

    根据提供的文档信息,本文将详细解析“游戏角色动画实现”这一主题下的关键技术点,包括MFC与C++在游戏开发中的应用、位图处理技术、时钟消息机制以及屏幕刷新技术等。 ### 一、关键知识点概述 #### 1. MFC与C++ -...

    Unity3d 格斗游戏Demo,动画播放

    Unity3d是一款强大的跨平台游戏开发引擎,广泛用于2D、3D游戏的制作,而“Unity3d 格斗游戏Demo,动画播放”则是一个专门为初学者设计的学习资源,旨在帮助他们理解如何在Unity中实现游戏动画的播放。这个Demo以C#...

    动画美术基础期末总文件.zip

    在动画美术基础这门课程中,学生通常会学习到一系列与动画创作相关的理论和技术。期末作业往往会要求学生综合运用所学知识,通过An等专业软件来制作一个小动画,以展示他们的学习成果。在这个"动画美术基础期末总...

    Flash动画与游戏高级实例教程

    《Flash动画与游戏高级实例教程》是一本专为学习Flash高级技术而编写的教程,尤其适合已经掌握基础操作,希望进一步提升技能的动画制作者和游戏开发者。这本教程以精炼的韩文编写,深入浅出地讲解了Flash在动画制作...

    《游戏动画色彩基础教程》-源文件.rar

    《游戏动画色彩基础教程》是一份专为游戏动画制作爱好者和专业人员设计的教学资料,旨在深入浅出地讲解游戏动画中的色彩运用技巧。本教程由董颉敏老师编著,包含丰富的源文件供学习者实践操作,提升色彩感知与表现力...

    《Unity Animation Essentials》《Unity游戏动画设计》英文版 及 代码

    《Unity Animation Essentials》是针对Unity引擎动画系统的一本权威指南,涵盖了从基础到高级的各种动画技术,旨在帮助游戏开发者和3D艺术家充分利用Unity的强大功能来创建生动、交互的游戏体验。这本书详细介绍了...

    HTML-Javascript动画基础

    1. **动画基础**: - CSS动画:通过CSS3的`transition`和`animation`属性实现元素的平滑过渡和关键帧动画。 - JavaScript动画:利用JavaScript的`requestAnimationFrame`或定时器(如`setInterval`、`setTimeout`...

    GDI实现游戏品质的动画系统

    在本文中,我们将深入探讨如何使用GDI(Graphics Device Interface)技术来构建具有游戏品质的动画系统。GDI是Windows操作系统中的一个核心组件,它允许应用程序与图形硬件进行交互,从而绘制图形、文本以及实现动态...

    图像处理与动画设计基础教程ppt

    Flash主要用于创建交互式矢量图形和多媒体内容,尤其适合网页动画和简单的游戏制作。它涉及到时间轴、帧、图层和关键帧的概念,以及补间动画和形状补间的运用。 【高级动画】 最后,第14章“高级动画”可能涵盖更...

Global site tag (gtag.js) - Google Analytics