我只是在用户触摸从位图本身移动时尝试移动位图,它适用于向下和向侧面移动但是当我尝试向上移动位图时它不起作用。
目前,我一直在接触:
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);
使用位图的中心绘制画布的左上角。
答案 0 :(得分:0)
这是错误的(请参阅编辑):
如果可以的话,更多信息将会有所帮助,但我的猜测就是这样:if:
if(Xtouch >= x && Xtouch < (x + ball.getWidth())
&& Ytouch >= y && Ytouch < (y + ball.getHeight()))
{
x = Xtouch;
y = Ytouch;
}
位Ytouch >= y && Ytouch < (y + ball.getHeight())
应该读取Ytouch <= y && Ytouch > (y - ball.getHeight())
,因为图形通常在屏幕的左上角有点(0,0)
。再一次,更多的信息会很好,因为这是在黑暗中的一点点。
修改强>
我现在很累,无法立即进行筹码交换。上面的答案是错误的。随意 downvote this 。有那么一刻,我一直在想,当你走下去的时候,你就变成了负面的,这正是我认为你在代码中疯狂的混乱。