移动游戏背景

借助于Bitmap的createBitmap()方法可以“挖取”源位图的其中一块,这样可以在程序中通过定时器控制不断地“挖取”源位图不同位置的块,从而给用户看到背景移动“假象”。

import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;

public class MoveBack extends Activity{

  @Override  protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(new MyView(this));

  }

  class MyView extends View{

    //记录背景位图的实际高度

    final int BACK_HEIGHT = 1700;

    //背景图片

    private Bitmap back;

    private Bitmap plane;

    //背景图片的开始位置

    final int WIDTG = 320;

    final int HEIGHT = 440;

    private int startY = BACK_HEIGHT - HEIGHT;

    public MyView(Context context) {

      super(context);

      back = BitmapFactory.decodeResource(context.getResources(), R.drawable.back_img);

      plane = BitmapFactory.decodeResource(context.getResources(), R.drawable.plane);

      final Handler handler = new Handler(){

        @Override

        public void handleMessage(Message msg) {

          if(msg.what == 0x123){

            //重新开始移动

            if(startY <= 0){

              startY = BACK_HEIGHT - HEIGHT;

            }else{

              startY -= 3;

            }

          }

          invalidate();

        }

      };

      new Timer().schedule(new TimerTask() {

        @Override

        public void run() {

          handler.sendEmptyMessage(0x123);

        }

      }, 0, 100);

    }

    @Override

    protected void onDraw(Canvas canvas) {

      // 根据原始位图和Matrix创建新图片

      Bitmap bitmap2 = Bitmap.createBitmap(back, 0, startY, WIDTG, HEIGHT);

      //绘制新位图

      canvas.drawBitmap(bitmap2, 0, 0 , null);

      //绘制飞机

      canvas.drawBitmap(plane, 160, 380, null);

    }

}

}

时间: 2024-11-08 21:51:32

移动游戏背景的相关文章

【雷电】源码分析(三)-- 游戏背景

Android系统手机屏幕的左上角为坐标系,同时y轴方向与笛卡尔坐标系的y轴方向想反.通过提供的api如getLeft , getTop, getBottom, getRight可以获得控件在parent中的相对位置.同时,也可以获得控件在屏幕中的绝对位置,详细用法可参考android应用程序中获取view的位置 当我们编写一些自定义的滑动控件时,会用到一些api如scrollTo(),scrollBy(),getScrollX(), getScrollY().由于常常会对函数getScroll

Android_(游戏)打飞机02:游戏背景滚动

Android_(游戏)打飞机01:前言 传送门 Android_(游戏)打飞机02:游戏背景滚动 传送门 游戏背景滚动效果 package com.example.administrator.myapplication; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; imp

cocos2d-x 3.2 移动游戏背景和精灵

1,先新增监听事件 auto listener = EventListenerTouchOneByOne::create(); listener->setSwallowTouches(true); listener->onTouchBegan = CC_CALLBACK_2(StartGame::onTouchBegan, this); listener->onTouchMoved = CC_CALLBACK_2(StartGame::onTouchMoved, this); liste

cocos2dx游戏--欢欢英雄传说--添加游戏背景

经过一段时间的学习cocos2dx,接下来我想要实践开发一个小游戏,我把它命名为“欢欢英雄传说”,项目名将取为HuanHero.环境:cocos2dx环境:cocos2d-x 3.11.1IDE:Code::Blocks 16.01项目类型:cpp项目首先创建一个项目:进入cocos2dx目录,输入: cocos new HuanHero -l cpp -d ./projects/ 这样便在projects目录下新建了一个项目"HuanHero".进入./projects/HuanHe

【Unity NGUI游戏开发之六】游戏背景采用UV纹理动画

开发背景 游戏中一些背景能采用UV动画,效果更佳.eg.星空.墙壁 因为gif的原因有卡顿,起始播放纹理动画的时候是不会有卡顿的. Unity的NGUI采用纹理动画 NGUI的UITexture允许使用一张纹理 有了这个,我们便可以扩展一个脚本来影响[UV Rect]参数了 /** 基于NGUI的UITexture的纹理动画 1.图片首尾相接的UITexture,可以播放UV纹理动画 2.可以根据定制UV动画方向.速度 3.图片属性: [Texture Type]:Texture [Wrap M

《游戏架构设计与策划基础》笔记 第一章 游戏策划概述(上)

1.1 什么是游戏策划 游戏的目的就是通过玩来获得娱乐,因此,设计游戏既需要艺术家一样的创造力,也需要工程师一样的精心规划.游戏设计是一门手艺,就像是好莱坞的电影摄像或服装设计一样.一个游戏既含有艺术要素,也含有功能要素:它必须能给人以美的享受,同时又必须能很好地运行,让游戏者享受到快乐.具备这两种特点的游戏才是好的游戏. 1.2 游戏策划的任务 游戏策划根据自己的创作理念,结合市场调研得来的数据,参考其他开发人员的意见和建议,在开发条件允许的基础上,将游戏创意以及游戏内容和规则细化完整,形成策

Java版贪吃蛇(比较完善的版本)

很认真的写的一个java版的贪吃蛇游戏,图形界面,支持菜单操作,键盘监听,可加速,减速,统计得分,设定运动速度,设定游戏背景颜色等!应该没有Bug了,因为全被我修改没了.哈哈. 下面是项目各包及类的层次关系: 游戏的主要运行界面截图如下: 下面是部分代码,详细源码见此链接:http://pan.baidu.com/s/1bnubnzh //Snake类: package com.huowolf.entities; import java.awt.Color; import java.awt.Gr

结对-贪吃蛇游戏-设计文档

准备阶段:安装Python.pygame.sublime.Dreamweaver 1.设计游戏窗口,游戏背景 2.设置开始.暂停 3.生成玩家. 4.设置玩家移动控制 5.设置随机生成目标 6.设置玩家与目标发生碰撞后,玩家增长 7.设置玩家死亡情况 8.设置结束游戏

《结对-结对编项目作业名称-需求分析》

一.             引言1.   编写目的 本文档将对<贪吃蛇>游戏软件开发需求进行描述,开发出一部属于自己的软件游戏.2.   背景 本项目作为训练编写软件文档而提出,通过了解<贪吃蛇>的游戏开发历程,了解软件文档的相关标准和编写原则,训练并掌握各类文档的写作技巧.本项目也作为实验教材. 本项目的名称:贪吃蛇游戏软件 本项目的提出者:高云鹏,孙晨旭 本项目的开发者:高云鹏,孙晨旭 3.   参考资料 ① 基于控制台实现贪吃蛇游戏 ②python学习笔记05:贪吃蛇游戏代