让一个游戏人物动起来,

2024-05-16 12:08
文章标签 游戏 起来 人物

本文主要是介绍让一个游戏人物动起来,,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

480人阅读 评论(2) 收藏 举报
游戏 dst thread class null

今天我来复习一下如何让一个游戏人物动起来,下面我发一张截图上来

1、首先,我们要找到一张原图,它的宽度为60*5,高度为57

2、创建一个gameView类

[java] view plain copy
  1. package com.mwf.move;  
  2.   
  3. import java.io.IOException;  
  4. import java.io.InputStream;  
  5.   
  6. import android.content.Context;  
  7. import android.graphics.Bitmap;  
  8. import android.graphics.BitmapFactory;  
  9. import android.graphics.Canvas;  
  10. import android.graphics.Paint;  
  11. import android.graphics.Rect;  
  12. import android.view.View;  
  13.   
  14. public class gameView extends View implements Runnable  
  15. {  
  16.     // 创建一个线程对象  
  17.     public Thread currentThread;  
  18.     // 得到图片的对象  
  19.     public Bitmap yingwu;  
  20.   
  21.     /** 
  22.      * 图片的初始化 
  23.      *  
  24.      * @param context 
  25.      */  
  26.     public gameView(Context context)  
  27.     {  
  28.         super(context);  
  29.         // 导入图片资源  
  30.         try  
  31.         {  
  32.             // 注意这里取得图片是在assets文件夹下  
  33.             InputStream is = context.getAssets().open("bird03_yingwu.png");  
  34.             yingwu = BitmapFactory.decodeStream(is);  
  35.         } catch (IOException e)  
  36.         {  
  37.             e.printStackTrace();  
  38.         }  
  39.         // 开启线程,十分重要  
  40.         startThread();  
  41.   
  42.     }  
  43.   
  44.     // 处理每一帧的播放  
  45.     public int index = 0;  
  46.     // 人物的x和y坐标  
  47.     int x = 700;  
  48.     int y = 200;  
  49.     // src是原图片,dst是绘制在屏幕上的图片  
  50.     public Rect src = new Rect();  
  51.     public Rect dst = new Rect();  
  52.   
  53.     /** 
  54.      * 图片的绘制 
  55.      */  
  56.     protected void onDraw(Canvas canvas)  
  57.     {  
  58.         super.onDraw(canvas);  
  59.         // 创建一个Paint的实例  
  60.         Paint paint = new Paint();  
  61.         // 首先取得人物的第一帧  
  62.         src.left = index * 60;  
  63.         src.right = src.left + 60;  
  64.         src.top = 0;  
  65.         src.bottom = 57;  
  66.   
  67.         dst.left = x;  
  68.         dst.right = dst.left + 60;  
  69.         dst.top = y;  
  70.         dst.bottom = dst.top + 57;  
  71.   
  72.         canvas.drawBitmap(yingwu, src, dst, paint);  
  73.         // 帧数的累加  
  74.         index++;  
  75.         // 总共5帧  
  76.         index %= 5;  
  77.         // 人物的移动  
  78.         x -= 3;  
  79.     }  
  80.   
  81.     /** 
  82.      * 开启线程 
  83.      */  
  84.     public void startThread()  
  85.     {  
  86.         currentThread = new Thread(this);  
  87.         currentThread.start();  
  88.     }  
  89.   
  90.     /** 
  91.      * 关闭线程 
  92.      */  
  93.     public void stopThread()  
  94.     {  
  95.         currentThread = null;  
  96.     }  
  97.   
  98.     /** 
  99.      * 实现线程的方法 
  100.      */  
  101.     public void run()  
  102.     {  
  103.         while (currentThread != null)  
  104.         {  
  105.             //实现界面刷新  
  106.             this.postInvalidate();  
  107.             try  
  108.             {  
  109.                 Thread.sleep(200);  
  110.             } catch (InterruptedException e)  
  111.             {  
  112.                 e.printStackTrace();  
  113.             }  
  114.   
  115.         }  
  116.     }  
  117.   
  118. }  
3、在Activity中调用gameView即可
[java] view plain copy
  1. package com.mwf.move;  
  2.   
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5.   
  6. public class MoveBitmapActivity extends Activity  
  7. {  
  8.   
  9.     public gameView gameview;  
  10.   
  11.     public void onCreate(Bundle savedInstanceState)  
  12.     {  
  13.         super.onCreate(savedInstanceState);  
  14.         setContentView(gameview = new gameView(this));  
  15.     } 

这篇关于让一个游戏人物动起来,的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/994869

相关文章

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

Python开发文字版随机事件游戏的项目实例

《Python开发文字版随机事件游戏的项目实例》随机事件游戏是一种通过生成不可预测的事件来增强游戏体验的类型,在这篇博文中,我们将使用Python开发一款文字版随机事件游戏,通过这个项目,读者不仅能够... 目录项目概述2.1 游戏概念2.2 游戏特色2.3 目标玩家群体技术选择与环境准备3.1 开发环境3

Java程序进程起来了但是不打印日志的原因分析

《Java程序进程起来了但是不打印日志的原因分析》:本文主要介绍Java程序进程起来了但是不打印日志的原因分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java程序进程起来了但是不打印日志的原因1、日志配置问题2、日志文件权限问题3、日志文件路径问题4、程序

Python开发围棋游戏的实例代码(实现全部功能)

《Python开发围棋游戏的实例代码(实现全部功能)》围棋是一种古老而复杂的策略棋类游戏,起源于中国,已有超过2500年的历史,本文介绍了如何用Python开发一个简单的围棋游戏,实例代码涵盖了游戏的... 目录1. 围棋游戏概述1.1 游戏规则1.2 游戏设计思路2. 环境准备3. 创建棋盘3.1 棋盘类

MySQL数据库宕机,启动不起来,教你一招搞定!

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG、Mongodb数据库运维(如安装迁移,性能优化、故障应急处理等)公众号:老苏畅谈运维欢迎关注本人公众号,更多精彩与您分享。 MySQL数据库宕机,数据页损坏问题,启动不起来,该如何排查和解决,本文将为你说明具体的排查过程。 查看MySQL error日志 查看 MySQL error日志,排查哪个表(表空间

国产游戏崛起:技术革新与文化自信的双重推动

近年来,国产游戏行业发展迅猛,技术水平和作品质量均得到了显著提升。特别是以《黑神话:悟空》为代表的一系列优秀作品,成功打破了过去中国游戏市场以手游和网游为主的局限,向全球玩家展示了中国在单机游戏领域的实力与潜力。随着中国开发者在画面渲染、物理引擎、AI 技术和服务器架构等方面取得了显著进展,国产游戏正逐步赢得国际市场的认可。然而,面对全球游戏行业的激烈竞争,国产游戏技术依然面临诸多挑战,未来的

用Unity2D制作一个人物,实现移动、跳起、人物静止和动起来时的动画:中(人物移动、跳起、静止动作)

上回我们学到创建一个地形和一个人物,今天我们实现一下人物实现移动和跳起,依次点击,我们准备创建一个C#文件 创建好我们点击进去,就会跳转到我们的Vision Studio,然后输入这些代码 using UnityEngine;public class Move : MonoBehaviour // 定义一个名为Move的类,继承自MonoBehaviour{private Rigidbo

火柴游戏java版

代码 /*** 火柴游戏* <p>* <li>有24根火柴</li>* <li>组成 A + B = C 等式</li>* <li>总共有多少种适合方式?</li>* <br>* <h>分析:</h>* <li>除去"+"、"="四根,最多可用火柴根数20根。</li>* <li>全部用两根组合成"1",最大数值为1111。使用枚举法,A和B范围在0~1111,C为A+B。判断</li>** @

国产游戏行业的崛起与挑战:技术创新引领未来

国产游戏行业的崛起与挑战:技术创新引领未来 近年来,国产游戏行业蓬勃发展,技术水平不断提升,许多优秀作品在国际市场上崭露头角。从画面渲染到物理引擎,从AI技术到服务器架构,国产游戏已实现质的飞跃。然而,面对全球游戏市场的激烈竞争,国产游戏技术仍然面临诸多挑战。本文将探讨这些挑战,并展望未来的机遇,深入分析IT技术的创新将如何推动行业发展。 国产游戏技术现状 国产游戏在画面渲染、物理引擎、AI

第四次北漂----挣个独立游戏的素材钱

第四次北漂,在智联招聘上,有个小公司主动和我联系。面试了下,决定入职了,osg/osgearth的。月薪两万一。 大跌眼镜的是,我入职后,第一天的工作内容就是接手他的工作,三天后他就离职了。 我之所以考虑入职,是因为 1,该公司有恒歌科技的freex平台源码,可以学学,对以前不懂的解解惑。 2,挣点素材钱,看看张亮002的视频,他用了6000多,在虚幻商城买的吸血鬼游戏相关的素材,可以玩两年。我