我想限制球不要离开屏幕,我有支票:
if(myBall.x - myBall.radius> 0 && myBall.x+myBall.radius < mainLayout.getWidth()) {
myBall.invalidate();
}
运动发生在最高灵敏度的加速度计上(球快速移动),发生的问题是球有时会离屏幕一半。我怎么能防止这种情况?谢谢!
答案 0 :(得分:0)
你的球每次移动一定的像素,所以它肯定会经常离开屏幕,你需要创建一个方法,如果它退出并将其设置在那里然后将它返回到屏幕中绘制它并执行invalidate()
方法
如果球水平移动,那么如果它从左侧熄灭,你只需将x设置为0,如果它从右边熄灭,则将其设置为window.width()。
修改强>
不确定你的意思是跳跃,但是我猜你在熄灭后正在把球拿回去然后再把它拉回来,如果是这样的话你需要在你确认它之后纠正它来画画不在外面。
你的代码有点乱,试着把它整理起来,比如:
if(ball.x > 0 && (ball.x + ball.width) < window.width()) //check what matters only
{ return_ball_inside; //correct mistakes
repaint();
}
invalidate(); //just call it after the corrections rather than in every condition