如何使用Android 调用update?
来源:互联网 发布:富爸爸买卖贵金属 知乎 编辑:程序博客网 时间:2024/06/06 04:03
下文详细说明介绍Android 调用update的具体学习方法以及详细工作学习,当休眠的时间已经到了,首先去调用update,即为下一次绘制做准备工作,再让自己休眠起来,最后通知系统重绘制自己。
然后等到苏醒后在Handler中就会让系统区绘制上次修改过的二维方块地图,然后再次Android 调用update,如此循环反复,生生不息),才使得游戏不断被推进,因此,比做“引擎“不为过。
既然update是游戏的动力,要让游戏停止下来只要不再Android 调用update就可以了(因为此时其实是画面静止了),因此游戏进入暂停(这个状态还可以转为“运行“。其实就是继续可以修改,再绘制)
- public void update()
- {
- if (mMode == RUNNING)
- {
- long now = System.currentTimeMillis();
- if (now - mLastMove > mMoveDelay)
- {
- clearTiles();
- updateWalls();
- updateSnake();
- updateApples();
- mLastMove = now;
- }
- mRedrawHandler.sleep(mMoveDelay);
- }
若进入失败(其实此时二维方块地图还停留在最后一个画面处,这也是为什么在开始时要首先清理掉整个地图)【这一点,可以在游戏失败后,再次开始新游戏,此时通过设置的断点即可观察到上次游戏运行时的底层数据】。
可是个人认为Snake下面这段代码读起来有点怪,有点像一个“先有鸡,还是先有蛋?“的问题,导致我的思维逻辑上出现一个“怪圈“。
- switch (item.getItemId()) {
- case MENU_ITEM_DELETE: {
- // Delete the note that the context menu is for
- Uri noteUri = ContentUris.withAppendedId(getIntent().getData(), info.id);
- getContentResolver().delete(noteUri, null, null);
- return true;
- }
- }
- return false;
按照这段代码的意思来看,当休眠的时间已经到了,首先去Android 调用update,即为下一次绘制做准备工作,再让自己休眠起来,最后通知系统重绘制自己。哎,这让我难以理解,还是回到时刻0的例子来说,在时刻0时让蛇身向北前进了一步(指的是底层的二维方格地图的修改,不是界面)。
然后让自己休眠0.6毫秒,当时间到了,首先去Android 调用update方法,那么就又会让蛇身做出修改,也就是把上一次还没绘制的覆盖掉了(那么上一次的修改岂不是白费,还没画上去呢)。
更何况在update中又会让自己去休眠(还没调用invalidate,怎么又去休眠了?),又怎么还能去通知系统调用我的onDraw方法呢?也就是说invalidate根本没有执行???按我的理解,应该把顺序颠倒一下,先通知系统去调用onDraw方法重绘,使得上一次对底层二维方格地图的修改显示出来。
然后再去为下一次修改做准备工作,最后让自己进入休眠,等待苏醒过来,如此循环反复。实验证明,颠倒过来也是正确的,不过关于这一个迷惑我的地方,希望有朋友能指点我一下!记得在javascript里使用setInterval时,也是先写处理逻辑,然后在末尾处写上一句setInterval(这也是我习惯的思维方式了),难道google上面这种写法有何深意?
此外,感觉每次绘制时都重新绘制墙壁,有点浪费时间,因为墙壁根本没有任何变化的。还有就是mLastMove这个变量设置的初衷是保证当前时间点距上一次变化已经过去了mMoveDelay毫秒,可是既然已经用了sleep机制,再使用这个时间差看上去并无必要。
- 如何使用Android 调用update?
- Android 调用update
- 如何制作android update刷机包
- Android之如何使用javascript调用android代码
- Android之如何使用javascript调用android代码
- Android之如何使用javascript调用android代码
- Android之如何使用javascript调用android代码
- Android之如何使用javascript调用android代码
- 关于Android NDK如何成功调用stl的使用分析
- Android如何使用已调用多个Activity的Application
- Android如何调用摄像头
- Android如何调用摄像头
- android如何调用c++
- 如何使用JavaScript调用android原生代码,android原生代码调用JavaScript
- Android:使用PopupWindow.update( )碰到的坑
- 如何制作自己的android升级包(update.zip)
- 如何在update中使用case分支控制流
- 如何在RedHat AS 5 Update上使用sar命令
- 优化SQL查询:如何写出高性能SQL语句
- C++primer(第4版)书评
- android 开发
- 在ASP.NET MVC中使用DropDownList
- uva 657 - The die is cast
- 如何使用Android 调用update?
- STL源码剖析 -- 读书笔记
- PROCESSENTRY32 结构
- 解决sqlplus下方向键的问题
- objective-C不支持16进制的颜色表示,需要转换成rgb表示法
- 水晶报表好的博客园
- Websharp 个人记录
- VS 2012 C++程序将支持Windows XP (这篇文章害我浪费了一整天的时间查问题)
- chrome下img加载对height()的影响