当前位置: 首页 > news >正文

怎样建设卡盟网站/网络营销最新案例

怎样建设卡盟网站,网络营销最新案例,九九建筑网登入,最近国际重大新闻事件20221.游戏适屏的简述和作用 由于市面上安装 Android 系统的手机不断增多,出现了各种分辨率、各种屏幕尺寸的Android 系统手机。为了保证一个游戏或者一个软件能在所有的 Android 手机上正常显示,常用的适屏做法有:利用屏幕宽高、位图宽高来设置…

1.游戏适屏的简述和作用

由于市面上安装 Android 系统的手机不断增多,出现了各种分辨率、各种屏幕尺寸的Android 系统手机。为了保证一个游戏或者一个软件能在所有的 Android 手机上正常显示,常用的适屏做法有:利用屏幕宽高、位图宽高来设置一些游戏元素的位置;字体的适屏做法最好的使用字体图,这样文字不会因为手机分辨率不同而不同,毕竟图片大小是固定不变的。

2.让游戏主角动起来
实例演示将一张由多行多列的动作帧组成的图片实现动态效果。

 

新建项目,游戏框架为SurfaceView 框架,准备图片robot.png如下:

修改MySurfaceView 类,代码如下:

 

复制代码
package com.example.ex4_13;import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.KeyEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceHolder.Callback;
import android.view.SurfaceView;public class MySurfaceView extends SurfaceView implements Callback,Runnable {private SurfaceHolder sfh;private Canvas canvas;private Paint paint;private boolean flag;private Thread th;//机器人位图private Bitmap bmpRobot ;//机器人的方向常量private final int DIR_LEFT =0;private final int DIR_RIGHT=1;//机器人当前的方向private int dir = DIR_RIGHT;//动作帧下标private int currentFrame;//机器人的X,Y位置private int robot_x,robot_y;//处理按键卡现象private boolean isUp, isDown, isLeft, isRight;public MySurfaceView(Context context) {super(context);sfh = this.getHolder();sfh.addCallback(this);paint = new Paint();paint.setColor(Color.WHITE);paint.setAntiAlias(true);setFocusable(true);bmpRobot = BitmapFactory.decodeResource(this.getResources(), R.drawable.robot);}/*** SurfaceView视图创建,响应此函数*/@Overridepublic void surfaceCreated(SurfaceHolder holder) {flag = true;//实例线程th = new Thread(this);//启动线程
        th.start();}/*** SurfaceView视图状态发生改变,响应此函数*/@Overridepublic void surfaceChanged(SurfaceHolder holder, int format, int width,int height) {}/*** SurfaceView视图消亡时,响应此函数*/@Overridepublic void surfaceDestroyed(SurfaceHolder holder) {flag = false;}/*** 绘制函数*/private void myDraw(){try {canvas = sfh.lockCanvas();if(canvas!=null){canvas.drawColor(Color.BLACK);drawFrame(currentFrame,canvas,paint);}} catch (Exception e) {// TODO: handle exception}finally{if(canvas!=null){sfh.unlockCanvasAndPost(canvas);}}}/*** * @param currentFrame 绘制帧* @param frameW  *             每帧的高* @param frameH *             每帧的高* @param canvas  *             画布实例* @param paint         *              画笔实例*/private void drawFrame(int currentFrame,Canvas canvas,Paint paint){//每帧的宽int frameW = bmpRobot.getWidth() / 6;//每帧的高int frameH = bmpRobot.getHeight() / 2;//得到位图的列数int col = bmpRobot.getWidth() / frameW;//得到当前帧相对于位图的X坐标int x = currentFrame % col * frameW;//得到当前帧相对于位图的Y坐标int y = currentFrame / col * frameH;canvas.save();//设置一个宽高与机器人每帧相同大小的可视区域canvas.clipRect(robot_x, robot_y, robot_x + bmpRobot.getWidth() / 6, robot_y + bmpRobot.getHeight() / 2);if (dir == DIR_LEFT) {//如果是向左侧移动//镜像操作 - 反转 - 改变机器人动画的朝向canvas.scale(-1, 1, robot_x - x + bmpRobot.getWidth() / 2, robot_y - y + bmpRobot.getHeight() / 2);}canvas.drawBitmap(bmpRobot, robot_x - x, robot_y - y, paint);canvas.restore();}/*** 游戏逻辑*/private void logic() {//控制机器人位移方向if (isUp) {robot_y -= 5;}if (isDown) {robot_y += 5;}if (isLeft) {robot_x -= 5;}if (isRight) {robot_x += 5;}//动作帧数的循环控制,让其动作帧不断重复播放currentFrame++;if (currentFrame >= 12) {currentFrame = 0;}}@Overridepublic void run() {while (flag) {long start = System.currentTimeMillis();myDraw();logic();long end = System.currentTimeMillis();try {if (end - start < 50) {Thread.sleep(50 - (end - start));}} catch (InterruptedException e) {e.printStackTrace();}}}/*** 按键事件监听*/@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if (keyCode == KeyEvent.KEYCODE_DPAD_UP) {isUp = true;}if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN) {isDown = true;}if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT) {isLeft = true;dir = DIR_LEFT;}if (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT) {isRight = true;dir = DIR_RIGHT;}return super.onKeyDown(keyCode, event);}@Overridepublic boolean onKeyUp(int keyCode, KeyEvent event) {if (keyCode == KeyEvent.KEYCODE_DPAD_UP) {isUp = false;}if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN) {isDown = false;}if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT) {isLeft = false;}if (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT) {isRight = false;}return super.onKeyUp(keyCode, event);}}
复制代码

 

本文地址:http://www.cnblogs.com/yc-755909659/p/4179436.html

http://www.lbrq.cn/news/1339507.html

相关文章:

  • 下载专门做初中数学题的网站/千锋教育的真实性
  • 福州市建设局内部网站/网络营销方式有几种
  • 俄罗斯乌克兰战争最新消息/seo外包公司如何优化
  • wordpress无法创建数据库/北京网站优化seo
  • 石家庄关键词搜索引擎优化/win7优化教程
  • 网站建设公司上海做网站公司排名/小红书推广
  • dede 中英文网站/东莞网站建设哪家公司好
  • 品牌高端网站制作企业/黑五类广告推广
  • django网站开发教程/能打开的a站
  • 网站底部的制作/黄页引流推广链接
  • 江苏省建设工程竣工验收网站/网络营销渠道名词解释
  • 想开一家相亲网站 怎么做/武汉网站提升排名
  • 网站收录查询方法/实体店引流推广方法
  • 会展策划与管理/重庆网站seo技术
  • 教育网站制作多少费用/nba今日数据
  • 哈尔滨学校网站建设/百度搜题在线使用
  • 单页关键字优化/seo秘籍优化课程
  • 销售网站建设/黄冈免费网站推广平台汇总
  • 移动手机号码网站/网络营销包括
  • 飞沐网站建设公司北京/百度指数搜索指数的数据来源
  • iis网站找不到网页/东莞百度seo
  • 那片海dede织梦源码企业网络公司工作室网站模板源码模板php/百度网页打不开
  • 越烽建设集团有限公司网站/搜客通
  • 都用什么软件做网站/怎么知道自己的域名
  • 全网网站建设优化/新疆头条今日头条新闻
  • 2017政府网站设计方案/百度网址大全旧版本
  • 哪个网站反盗版做的最好/百度下载2021新版安装
  • 在线购物网站建设流程图/电商中seo是什么意思
  • 企业微信邮箱怎么开通注册/网站优化seo教程
  • 哪些网站是用php开发的/广州网站优化
  • 性能解析案例
  • 数模个人笔记
  • 【R语言】单细胞数据整合质量评估(3)
  • GitHub第三方登录全解析:OAuth 2.0流程详解(适合初学者)
  • 操作系统:多线程模型(Multithreading Models)与超线程技术(Hyperthreading)
  • YOLO-Count:用于文本到图像生成的可微分目标计数