首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >贴图触觉运动

贴图触觉运动
EN

Code Review用户
提问于 2014-05-03 13:17:49
回答 1查看 205关注 0票数 3

我目前正在为Android开发一个游戏。我正在做的事情之一是通过触摸移动地图。

这是处理获取速度的代码,然后将其添加到屏幕位置,下一次更新将绘制映射的相应部分。

代码语言:javascript
复制
@Override
public boolean onTouchEvent(MotionEvent event) {
    switch(event.getAction()) {
    case MotionEvent.ACTION_DOWN:
        if (released) {
            touchX = event.getX();
            touchY = event.getY();
            released = false;
        }
        else {
            float newX = event.getX();
            float newY = event.getY();
            speedX = (int) (newX - touchX);
            speedY = (int) (newY - touchY);
            touchX = newX;
            touchY = newY;
        }
        return true;
    case MotionEvent.ACTION_UP:
        released = true;
        return true;
    }
    return false;
}

它工作得很好,真的。但这似乎还不够流体运动。

有人知道我怎样才能让它更像无缝运动吗?

编辑:

现在我的fps是80了。因此,我不认为这是由位图本身造成的。

EN

回答 1

Code Review用户

发布于 2014-05-03 17:45:38

我在Android和处理触摸事件方面的经验是,在运行应用程序时,很难查看代码并了解它将如何工作。这甚至可以是不同的安卓设备的不同,所以要确保你的应用程序是在Android2.3.5和安卓的4+设备上测试的(假设你的目标也是Android2.3.5)。

据我所知,“通过触摸移动地图”意味着您正在滚动地图,就像一个HorizontalScrollView与一个普通的(垂直的) ScrollView组合在一起。据说,可以将这两者结合在一起创建一个“二维滚动视图”,但我自己并没有能够以一种创造平滑用户体验的方式完成这一任务(实际上,我认为这是一种不好的做法)。不过,我还是找到了一个非常容易使用的Android视图类,它负责所有这些滚动操作。然而,这个链接似乎已经消失了,但是您可以尝试这个GitHub项目,如果这对您不起作用,那么通过评论或者在第二监测器聊天室找到我,让我知道,我可以提供我正在使用的实现。

至于你现有的代码,它是干净的,它是直进的。但是speedX/speedYtouchX/touchY在哪里使用?问题会在那里吗?

我只有一个改进您的代码的建议:

代码语言:javascript
复制
switch(event.getAction()) {

应该是(请看这里)

代码语言:javascript
复制
switch(event.getActionMasked()) {

处理触摸活动时的一般建议:

日志、日志和日志就像疯子一样使用Log.d("YOUR_TAG", "A whole bunch of information")!您记录的越多,希望您能够更多地了解MotionEvents,并能够编写更好的代码。

票数 2
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/48860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档