Himi 原创, 转载请注明! 谢谢。
原文地址:http://blog.csdn.net/xiaominghimi/archive/2010/12/21/6090631.aspx
各位童鞋请你们注意:surfaceview中确实有 onDraw这个方法,但是surfaceview不会自己去调用!!!
而我代码中的ondraw 也好 draw 也好,都是我自己定义的一个方法。。。放在线程中不断调用的,一定要注意!!
其实上一篇分析surfaceview的文章就是一个简单的游戏框架了,当然这里再强调一下,简单的游戏框架,所以不要高手们不要乱喷~
这个Demo是给群里一童鞋写的一个对图片操作以及按键处理,游戏简单框架的一个demo,这里放出给大家分享~
备注1
此方法是用来响应按键!如果是自己定义一个继承自View的类,重新实现onKeyDown方法后,只有当该View获得焦点时才会调用onKeyDown方法,Actvity中的onKeyDown方法是当所有控件均没有处理该按键事件时,才会调用.
备注2
这里也是对屏幕进行刷屏操作,其实这也只是一种,之前文章里我也用到drawRGB的方法同样实现,当然也可以用fillRect等来刷屏。
那么这里我想说下,在继承view中,因为onDraw方法是系统自动调用的,不像在surfaceview这里这样去在run里面自己去不断调用,在view中我们可以抵用invalidate()/postInvalidate() 这两种方法实现让系统调用onDraw方法,这里也是和surfaceview中的不同之一!
备注3
这里canvas.save();和canvas.restore();是两个相互匹配出现的,作用是用来保存画布的状态和取出保存的状态的。这里稍微解释一下,
当我们对画布进行旋转,缩放,平移等操作的时候其实我们是想对特定的元素进行操作,比如图片,一个矩形等,但是当你用canvas的方法来进行这些操作的时候,其实是对整个画布进行了操作,那么之后在画布上的元素都会受到影响,所以我们在操作之前调用canvas.save()来保存画布当前的状态,当操作之后取出之前保存过的状态,这样就不会对其他的元素进行影响
对于canvas.save();和canvas.restore(); 还有不少童鞋不懂,OK、我再补充点:
代码段1:
代码段2:
上面这两个代码片段中我们都假设有两张图片 bmp1和bmp2,并且都画在画布上!
那么代码段1和代码段2的不同:
代码段1中我们进行画布缩放的之前保存了画布状态,做了缩放操作之后又取出之前保存的状态,这样做是为了保证bmp2正常画出来不受到缩放的影响!
代码段2里,画了bmp1后就执行了缩放操作,并且没有保存状态!紧接着画了bmp2,那么bmp2也会一样受到缩放的影响!!
所以我们如果单独处理一张图片的时候,而且不想影响其他部分的绘制,那么应该如下来做:
源码下载地址: http://download.csdn.net/source/2927823
分享到:
相关推荐
这个“android人物行走demo”就是这样一个示例,它展示了如何在Android上创建和控制一个角色进行动态行走的效果。下面我们将深入探讨这个主题,讲解其中涉及到的关键知识点。 首先,我们关注的是Android的图形绘制...
6. **Android游戏开发**:如果压缩包中的`Himi(Android游戏demo+人物行走)`是一个Android游戏示例,那么它可能包含了Android平台上的游戏框架、适配触摸屏操作、性能优化等内容。Android游戏开发需要熟悉Java或...
1. **Cocos Creator框架**:Cocos Creator是一个跨平台的游戏开发工具,支持JavaScript和TypeScript,提供了一整套完整的2D和3D游戏开发解决方案。它包含了一个强大的可视化编辑器,使得开发者可以便捷地进行资源...
总结来说,Sensor.TYPE_ACCELEROMETER是Android开发中的一个重要组成部分,它为移动应用提供了感知物理世界动态的能力,从而实现了丰富的交互和功能。理解和有效利用这个传感器,可以极大地提升用户体验和应用的实用...
《使用libgdx引擎开发游戏:深度探索Cuboc Demo》 libgdx是一个强大的开源游戏开发框架,专为跨平台游戏设计,支持Windows、Linux、Mac OS X、Android以及HTML5等多种平台。它提供了丰富的功能,包括图形渲染、音频...
AndEngine是一款开源的Android游戏开发框架,它提供了一套基于OpenGL ES 1.0和1.1的2D游戏开发库,使得开发者可以快速、高效地创建高质量的2D游戏。"AndEngine Demo 1"是AndEngine的基础教程示例,主要用于引导...
Cocos2dx是一个跨平台的游戏开发框架,使用C++编写,支持iOS、Android、Windows等多个操作系统,广泛应用于2D游戏开发。 在Cocos2dx中,"EffectNodes"通常指的是用于创建特殊视觉效果的节点类,如粒子系统、动画...
Cocos2d-x 是一个开源的游戏开发框架,基于C++,广泛应用于移动平台的游戏开发,包括iOS、Android以及Windows等系统。"cocos2dx demo source" 提供的源代码正是针对Cocos2d-x 的演示项目,旨在帮助开发者理解并掌握...
Cocos2d-x是一个广泛使用的开源游戏开发框架,支持多种平台,如iOS、Android、Windows等。这个项目可能是为2015年3月1日发布的一个教程或示例代码。 在Cocos2d-x 3.x版本中,开发者可以利用Tiled库来创建和管理2D...
综上所述,"myMTGame"作为一款基于Cocos2d-x的魔塔游戏示例,涵盖了游戏开发的多个核心环节,从基础的图形渲染到复杂的逻辑处理,再到跨平台的实现,为我们提供了一个学习和实践Cocos2d-x游戏开发的宝贵案例。...
- 通过摇杆控制游戏角色或飞行器的移动。 - **FBX模型的载入与人物行走动画的播放**: - FBX格式是一种常用的3D模型交换格式。 - 学习如何加载FBX模型以及如何播放模型的行走动画。 - **平面小球重力感应详解**...
Cocos2d是一个开源的游戏开发框架,它以其高效、易用和跨平台的特性深受开发者喜爱。在这个名为“cocos2d案例”的项目中,我们主要探讨了如何在Android平台上利用cocos2d进行游戏或交互式应用的开发。下面我们将详细...
总结起来,"ts_luademo" 是一个利用lua语言在TouchSprite平台上实现的状态机示例,旨在帮助开发者更好地理解和应用lua脚本来管理游戏或应用中的各种状态,提升开发效率和代码质量。通过深入研究这个项目,开发者可以...