Android SurfaceView 上的 2D 游戏在触摸时运行缓慢
我正在使用 Android SurfaceView 构建 2D 游戏。当我触摸屏幕时,游戏动画运行缓慢。为什么,我该如何避免这种情况?
触摸事件是存根,就像 onTouchEvents(MotionEvents ev){empty };
一样。所有游戏逻辑和图形绘制代码都位于 extendsThread
类的 run()
中。
I am building a 2D game with Android SurfaceView. When I touch the screen the game animation runs slowly. Why, and how can I avoid this?
The touch events are stubs just like onTouchEvents(MotionEvents ev){ empty };
. All of the game logic and graphics draw code are in run()
in an extends Thread
class.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
让 UI 线程休眠 16-20 毫秒将防止触摸事件处理代码每秒被调用太多次。
示例:
触摸事件的调度速度与 UI 线程可以读取它们的速度一样快,通过休眠线程,您可以跳过一些事件调度。 (虽然对于你的游戏逻辑或用户来说并不是一个明显的数量)
Sleeping the UI thread for 16-20ms will keep the touch event handling code from being called too many times per second.
Example:
Touch events are dispatched as quickly as the UI thread can read them, by sleeping the thread you are able to skip a number of event dispatches. (Though not a noticeable amount for your game logic or the user)
您是否看过 http://www.droidnova.com 上的教程?它们是很好的入门游戏,当我玩它们时,它们运行得很快。如果它们在您的触摸设备上运行缓慢,则可能不是开发问题
Have you looked at the tutorials at http://www.droidnova.com ? They are good intro game tuts and ran very quickly when I did them. If they run slowly on your device with touch it is probably not a dev issue
// 如果 (hasFocus())
// {
// 返回;
// }
// 别的
// {
// requestFocusFromTouch();
// }
这是我使用的基本方法。
这是我的代码。有什么问题吗?
// if (hasFocus())
// {
// return;
// }
// else
// {
// requestFocusFromTouch();
// }
this is base method that i used.
that's my code. any problem about it ?