【问题标题】:Can only move bitmap down and sideways Android只能向下和横向移动位图 Android
【发布时间】:2014-05-11 11:01:21
【问题描述】:

我只在用户触摸从位图本身移动时才尝试移动位图,它适用于向下和侧向移动,但当我尝试向上移动位图时它不起作用。

目前我正在联系:

public boolean onTouch(View v, MotionEvent m) 
    {
    try {
        Thread.sleep(50);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }

    int Xtouch = (int) m.getX();
    int Ytouch = (int) m.getY();

    switch(m.getAction())
    {
        case MotionEvent.ACTION_MOVE:       
        if(Xtouch >= x && Xtouch < (x + ball.getWidth())
        && Ytouch >= y && Ytouch < (y + ball.getHeight()))
        {
            x = Xtouch;
            y = Ytouch;
        }
        break;
    }
    return true;
}

x 和 y 是我的位图坐标,球是我的位图。我目前所拥有的只是执行标题中描述的行为。很抱歉,我真的无法更具体地解决我的问题,但如果有人能发现我遇到的任何潜在的愚蠢错误,那将是一个很大的帮助?

谢谢

编辑:

这就是我创建位图的方式:

 ball= BitmapFactory.decodeResource(getResources(), R.drawable.ball);

我最初将位图的 x 和 y 设置为 0。

这就是我绘制位图的方式:

 c.drawBitmap(ball, x - (ball.getWidth()/2),  y-(ball.getHeight()/2), null);

这使用位图的中心在画布的左上角绘制。

【问题讨论】:

    标签: java android canvas bitmap


    【解决方案1】:

    这是错误的(见编辑):

    如果可以的话,更多信息会有所帮助,但我的猜测是如果:

        if(Xtouch >= x && Xtouch < (x + ball.getWidth())
        && Ytouch >= y && Ytouch < (y + ball.getHeight()))
        {
            x = Xtouch;
            y = Ytouch;
        }
    

    Ytouch &gt;= y &amp;&amp; Ytouch &lt; (y + ball.getHeight()) 位应为Ytouch &lt;= y &amp;&amp; Ytouch &gt; (y - ball.getHeight()),因为图形通常在屏幕左上角有(0,0) 点。同样,更多信息会很好,因为这有点像在黑暗中拍摄。

    编辑:

    我现在可能太累了,无法进行堆栈交换。上面的答案是错误的。随意对此投反对票。有那么一刻,我在想当你下降时 y 变成了负数,这正是我认为你在代码中发疯的困惑。

    【讨论】:

    • 建议的编辑没有造成任何工作:) 我已经向 OP 添加了一些额外的可能有用的信息 :)
    • 我应该更具体一点,没有什么像现在我无法将球向任何方向移动! :)
    • 另外,if 语句是从这篇文章中获得的 :) - stackoverflow.com/questions/2447564/detect-touch-on-bitmap
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-08
    • 1970-01-01
    • 1970-01-01
    • 2015-09-09
    • 1970-01-01
    • 2013-12-30
    • 1970-01-01
    相关资源
    最近更新 更多