教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 建筑文档 >

Android手机游戏开发知识点总结(5)

来源:网络收集 时间:2026-04-01
导读: return mTextUtil.KeyDown(keyCode, event); } // 按键弹起事件 public boolean onKeyUp(int keyCode, KeyEvent event){ return false; } public boolean onKeyMultiple(int keyCode, int repeatCount, KeyEvent ev

return mTextUtil.KeyDown(keyCode, event); }

// 按键弹起事件

public boolean onKeyUp(int keyCode, KeyEvent event){ return false; }

public boolean onKeyMultiple(int keyCode, int repeatCount, KeyEvent event){ return true; } /** * 线程处理 */

public void run(){

while (!Thread.currentThread().isInterrupted()){ try{

Thread.sleep(100);

}catch (InterruptedException e){ Thread.currentThread().interrupt(); }

//使用postInvalidate可以直接在线程中更新界面 postInvalidate(); } } }

public class Activity01 extends Activity{ private GameView mGameView = null;

public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); mGameView = new GameView(this); setContentView(mGameView); }

// 按键弹起事件

public boolean onKeyUp(int keyCode, KeyEvent event){ return super.onKeyUp(keyCode, event);

}

// 按键按下事件

public boolean onKeyDown(int keyCode, KeyEvent event){ mGameView.onKeyDown(keyCode, event); return true; } }

第六部分 图像的绘制 旋转 缩放

1.((BitmapDrawable) getResource().getDrawable(资源索引)).getBitmap() 加载资源

2.canvas.drawBitmap(bitmap,x,y,null);将bitmap绘制在屏幕的(x,y)位置 3.getHeight() ,getWidth() 获得图片的高度好宽度

4.Android中通过Matrix旋转图片。Matrix没有结果体,它必须被实例化,可通过reset方法或set方法来实现。 setRotate方法来设置旋转角度

createBitmap 创建一个经过旋转等处理的Bitmap对象

5.Matrix的postScale(x,y)方法来设置缩放的倍数 分别在x,y方法缩放的倍数。 public class Draw_Bitmap extends Activity{ public DrawBitmap drawBitmap;

public void onCreate(Bundle savedInstanceState){ drawBitmap = new DrawBitmap(this); super.onCreate(savedInstanceState); setContentView(drawBitmap); }

public boolean onKeyDown(int keyCode,KeyEvent event){ if(drawBitmap == null){ return false;

}else if(keyCode ==KeyEvent.KEYCODE_BACK){ this.finish(); return true; }

return drawBitmap.onKeyDown(keyCode, event); } }

public class DrawBitmap extends View implements Runnable{ private static Paint paint1=null; public static Bitmap dog1=null; public Bitmap tb1=null; public int dog1width = 0; public int dog1height = 0; public float rotate=0.0f; public float scale = 1.0f;

Matrix matrix = new Matrix();//构建Matrix对象 Matrix用于旋转图片 public DrawBitmap(Context context) { super(context); paint1 = new Paint(); //从资源中装载图片 dog1 =

((BitmapDrawable)getResources().getDrawable(R.drawable.dog)).getBitmap(); tb1 =

((BitmapDrawable)getResources().getDrawable(R.drawable.tb)).getBitmap();

dog1width = dog1.getWidth();//得到图像的宽度 dog1height =dog1.getHeight();//得到图像的高度

new Thread(this).start();//创建,开启线程 }

public void onDraw(Canvas canvas){ super.onDraw(canvas); canvas.drawColor(Color.BLUE);

canvas.drawBitmap(dog1,10,240,paint1);

matrix.reset();//重置matrix得到Matrix的方法体 matrix.setRotate(rotate);//设置旋转

matrix.postScale(scale, scale);//设置缩放分别为(x,y)方法的缩放 Bitmap dog1rotate =

Bitmap.createBitmap(dog1,0,0,dog1width,dog1height,matrix,true);//按Matrix

的旋转构建新的Bitmap

DrawBitmap.drawImage(canvas,dog1rotate,130,240);//绘制旋转后的图片

dog1rotate= null;//这里难道是释放资源

DrawBitmap.drawImage(canvas,dog1,0,0);//在屏幕的(0,0)处绘制图片 DrawBitmap.drawImage2(canvas,tb1,10,dog1.getHeight(),142,100,150,178);//在指定位置按指定的裁决区域进行绘制 } /**

* i---屏幕上的x坐标 * height---屏幕上的y坐标 * j---要绘制图片的宽度 *k---要绘制图片的高度 *l---图片上的x坐标 *m---图片上的Y坐标 */

private static void drawImage2(Canvas canvas, Bitmap tb12, int i, int height, int j, int k, int l, int m) {

Rect rect1 = new Rect();//图片上裁剪区域 rect1.left = l; rect1.top =m; rect1.right=l+j; rect1.bottom = m+k;

Rect rect2 = new Rect();//屏幕上的裁剪区域 rect2.left = i; rect2.top = height; rect2.right =i+j;

rect2.bottom = height+k;

canvas.drawBitmap(tb12, rect1,rect2, null); }

private static void drawImage(Canvas canvas, Bitmap dog12, int i, int j){ canvas.drawBitmap(dog12,i,j,null); }

public boolean onKeyDown(int keyCode,KeyEvent event){ if(keyCode == KeyEvent.KEYCODE_DPAD_LEFT){ rotate+=10;

}else if(keyCode == KeyEvent.KEYCODE_DPAD_RIGHT){ rotate--;

}else if(keyCode == KeyEvent.KEYCODE_DPAD_DOWN){ if(scale>0.3){//注意:scale必须大于0,否则会报错 scale-=0.1; }

}else if(keyCode == KeyEvent.KEYCODE_DPAD_UP){ if(scale<2.0){ scale+=0.1; } }

return true; }

public boolean onKeyUp(int keyCode,KeyEvent event){ return false; }

public boolean onKeyMultiple(int keyCode, int repeatCount, KeyEvent event){ return true; }

@Override public void run() {

while(!Thread.currentThread().isInterrupted()){ try{

Thread.sleep(100); }catch(Exception e){

Thread.currentThread().interrupt(); }

postInvalidate(); } } }

…… 此处隐藏:2279字,全部文档内容请下载后查看。喜欢就下载吧 ……
Android手机游戏开发知识点总结(5).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/438798.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)