java - 按下画布时如何调用方法
问题描述
我正在开发一个带有车辆的游戏,我想在按下画布时移动这辆车,但这样不起作用。
public boolean onTouch(View v, MotionEvent event) {
if (event.getX() > 0 && event.getX() < 150 && event.getY() > 550 && event.getY() < 700) {
do{
System.out.println("Hallo");
}while (canvas.isPressed());
return false;
但我只是得到这个输出:
D/ViewRootImpl: ViewPostImeInputStage ACTION_DOWN
I/System.out: Hallo
任何想法?
解决方案
设置一个全局布尔值以了解何时MotionEvent.ACTION_DOWN
收到事件。
mUserTouched = true; // Set to true when MotionEvent.ACTION_DOWN
mUserTouched = false; // set to false when MotionEvent.ACTION_UP is received
然后,您可能想要使用一个Timer
或其他一些循环器,只要收到 MotionEvent.ACTION_DOWN 就会开始启动。invalidate()
并让它根据某个时间间隔触发调用。invalidate()
将导致View.onDraw()
被调用,因此您可以重新绘制汽车的位置。当收到 MotionEvent.ACTION_UP 时,取消Timer
如果有界限,那么mUserTouched = false'
每当MotionEvent
发生超出界限时,您还需要设置界限。
推荐阅读
- php - 我在将更新查询传递到 php 中的数据库时遇到困难
- apache - Varnish 与 Let's Encrypt 证书更新冲突
- swift - 无法在 Modal 的内容中放置图像视图
- ruby - 如何将块(成为 Proc 对象)传递给 ruby 方法
- r - 如何获取每一行数据框的经纬度数据,并分配相应的人口密度?
- testcomplete - TestComplete 工具中的类型不匹配错误存在属性
- python - 为什么 Matlab 引擎不能通过 pycharm 在 python3.7 上工作?
- javascript - 单击登录按钮时,ReactJS 挂钩未指向其他组件
- php - 在 Linux AMI EC2 实例上为 phpMyAdmin 5.0.2 安装启用 mysqli
- r - R可以在数据框中的字符串周围创建引号吗?需要文件格式化