- 浏览: 64161 次
-
最新评论
文章列表
作为一个刚入门或者还没入门的新手,着实花了我一些力气来理解这段代码。
对于各种不懂的地方,慢慢查询资料,对于新的方法,通过修改代码尝试效果。到现在终于能算个一知半解。
在代码中,对于自己有所收获的地方,我都做了相应的注释。
回过头来,觉得从这段代码中,能学到不少东西~~
包括Android应用的基本架构,他的面向对象的思想,以及代码的简洁明了。
于是,我想到,何不将这些东西分享出来,如果碰巧对感兴趣的朋友们有搜帮助,那就更好了~
好了,闲话不说~代码和注释如下(处于对源码的敬意,原本的英文注释部分都没有删去~大家可以配合理解):
PS:最近我正在写自己的“贪吃蛇”,说事贪吃蛇,其实 ...
- 2013-03-04 08:01
- 浏览 717
- 评论(0)
一、游戏分析
1、你需要考虑以下问题:
a)界面
墙
蛇
苹果
b)游戏逻辑
蛇走动
蛇的控制
苹果随机出现
蛇吃掉苹果
蛇长度增加
游戏在运行中,蛇的走动,转弯,吃掉苹果,怎么计算?二维数组实现,一个地图:map[x][y],墙边界、蛇的走边,吃苹果,都依靠坐标定位。
本游戏中有三种类型图片:墙,苹果(绿色),蛇头(红色),蛇身(黄色)
- 2013-03-04 07:58
- 浏览 512
- 评论(0)
位图是我们开发中最常用的资源,毕竟一个漂亮的界面对用户是最有吸引力的。
1. 从资源中获取位图
可以使用BitmapDrawable或者BitmapFactory来获取资源中的位图。
当然,首先需要获取资源:
Resources res=getResources();
使用BitmapDrawable获取位图
使用BitmapDrawable (InputStream is)构造一个BitmapDrawable;
使用BitmapDrawable类的getBitmap()获取得到位图;
// 读取InputStr ...
- 2013-03-03 22:18
- 浏览 671
- 评论(0)
Android 中拥有众多的图像绘制的函数,而功能最强大的就是
drawBitmap(Bitmapbitmap,Matrixmatrix,Paintpaint)
Android官方文档的描述为Draw the bitmap using the specified matrix.翻译成中文就是:用特定的矩阵来画图。而在其中最重要的参数就是
matrix。
Matrix矩阵这个东西对于数学困难的同学来说,那就是相当地困难。那么我们就不对矩阵本身进行操作。用
- 2013-03-03 22:10
- 浏览 549
- 评论(0)
Android 之事件处理(一)基于回调机制的事件处理
Android平台的事件处理机制有两种,一种是基于回调机制的,一种是基于监听接口的,现介绍第一种:基于回调机制的事件处理。
Android平台中,每个View都有自己的处理事件的 ...
- 2013-03-03 15:22
- 浏览 691
- 评论(0)
Android提供了强大的事件处理机制,它包括两套处理机制:
1.基于监听的事件处理
2.基于回调的事件处理
对于Android基于监听的事件处理,主要的做法是为Android界面组件绑定特定的事件监听器。
对于Android基于回调的事件处理,主要的方法是重写Android组件特定的回调方法或者重写
Activity的回调方法
一、基于监听的事件处理
在事件监听的处理模型中,主要涉及如下三类对象:
1.Event Source(事件源):事件发生的场所,通常就是各个组件、例如按钮、窗口、菜单等。
2.Event(事件):事件封装了界面组件上发生的特定事情(通常就是一次用户 ...
- 2013-03-03 15:19
- 浏览 859
- 评论(0)
Android的事件处理模式有两种:
基于监听的事件处理模式 & 基于回调的事件处理模式
1.基于监听的事件处理模式,这个比较简单,实现方法是
应用,内部类/内部匿名类/外部类/Activity本身实现监听接口作为事件监听器类,
或者直接绑定到标签五种方式。前四个大同小异,现在简单说下最后一种
对应很对Android标签而言,它们都支持onClick、onLongClick等属性,这种属性
的属性值就是一个形如xxx(View source)的方法的方法名。
例如在xml文件中有如下标签:
<Button
android:layout_width="w ...
- 2013-03-03 15:16
- 浏览 332
- 评论(0)
case WM_KeyDown这个是消息处理,一般windows sdk中使用的方法。
OnKeyDown是mfc对消息处理的封装。
实际上两者都一样,只是mfc封装起来比较好看一些
。当一个非系统键被按下时该消息发送给具有键盘焦点的窗口。非系统键即不与ALT联用的情况。其中wParam 指定非系统键的虚拟键码, lParam 指定重复次数,扫描码,扩展键标识符,上下文代码,前一键状态标识符,以及转换状态标识符。它们如下所示:0-15指定当前消息重复的次数。该值代表按键敲击的次数,就如同用户一直按下键盘按键一样。如果按键足够长,会发送多个消息。然而,重复次数不进行累加。16-23指 ...
- 2013-02-28 17:05
- 浏览 737
- 评论(0)
2010-11-03 18:18所谓的Win32开发,就是在C语言的层面上,直接使用Win32 API(Application Programming Interface:系统开放出来,给程序员使用的接口。)开发Windows应用程序或者系统程序。虽然现在直接用Win32 API开发应用程序的人已经不多了,但是深入理解Windows系统程序设计原理,仍然是成为Windows开发高手的良好途径。所谓的Win32,其实是一个API规范,与UNIX系统编程接口标准POSIX是相对应的。下面是进行直接的WIN32 SDK方式编程的基本思路或者说是一个框架。
一个WINDOWS程序分为程序代码和UI(U ...
- 2013-02-28 16:54
- 浏览 570
- 评论(0)
钩子(HOOK)是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息或特定事件(比如键盘和鼠标事件等),而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理window消息或特定事件。
以下是利用键盘钩子HOOK键盘操作的示例代码,实现了当捕获到键盘按键按下时会播放一段声音。
[cpp]
view plaincopy
#include<windows.h>
#include<tchar.h>
#include<Mmsystem.h>
...
- 2013-02-28 16:47
- 浏览 1171
- 评论(0)
hook是WINDOWS提供的一种消息处理机制,它使得程序员可以使用子过程来监视系统消息,并在消息到达目标过程前得到处理。
下面将介绍WINNDOWS HOOKS并且说明如何在WINDOWS 程序中使用它。
关于HOOKS
使用HOOK 将会降低系统效率,因为 ...
- 2013-02-28 16:35
- 浏览 900
- 评论(0)
要实现键盘监听,有很多办法,本例程是使用的钩子程序实现的。
首先要建立一个动态库,源码如下(该源码来自网络,并非本人作品):
hookdll.cpp
[cpp]
view plaincopy
#include<windows.h>
#include<time.h>
#include"string.h"
#include"stdio.h"
HINSTANCEhInst;
//创造数据段
//#pragma语句之后的所有初始化的变量都进入hookdata段中
#pragmadata_seg(&quo ...
- 2013-02-28 15:38
- 浏览 2800
- 评论(0)
Region是一个类,这个类比较常用的方法就是用于判断一个点是否在矩形区域内,其方法是使是Regions类中的contains(int x, int y)函数创建实例:RegionCollsion项目运行效果:、
package com.rectCollsion;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphi ...
- 2013-02-26 20:58
- 浏览 1746
- 评论(0)
Android中的View就是我们眼睛看到的、屏幕上显示的东东,是Activty的具体内容的体现。每一个View都有一个Canvas(画布),我们可以对它进行扩展,使用画布绘制我们想要的图像。对View进行扩展十分简单,只需要继承View类,重载它的onDraw方法,在onDraw方法中利用画布画出各种图案,包括三角形、点、矩形、线、图片等。View必须在UI线程中刷新屏幕,因此一般用于被动更新画面的游戏,既不需要实时更新画面的游戏,需要玩家操作后才更新,如:棋牌类游戏。更新画面有两种方式:调用invalidate()或者postInvalidate()方法。对于一些对画面更新实时性更强的游戏, ...
- 2013-02-26 20:27
- 浏览 3427
- 评论(0)
. SurfaceView介绍
通常情况程序的View和用户响应都是在同一个线程中处理的,这也是为什么处理长时间事件(例如访问网络)需要放到另外的线程中去(防止阻塞当前UI线程的操作和绘制)。但是在其他线程中却不能修改UI元素,例如用后台线程更新自定义View(调用View的在自定义View中的onDraw函数)是不允许的。<wbr><wbr><br>
如果需要在另外的线程绘制界面、需要迅速的更新界面,或者渲染UI界面需要较长的时间,这种情况就要使用SurfaceView了。SurfaceView中包含一个Surface对象,而Surface ...
- 2013-02-26 19:59
- 浏览 889
- 评论(0)