gpt4 book ai didi

Android OnTouch 方法值无法初始化

转载 作者:行者123 更新时间:2023-11-29 20:24:32 30 4
gpt4 key购买 nike

在我的应用程序中,我想计算两个距离之间的比率,但我不知道为什么变量 dist1 和 dist2 没有保存我在 IF ELSE 语句中计算的值,我的代码有什么问题?

任何指导或帮助将不胜感激。

这是方法编码:

@Override
public boolean onTouchEvent(MotionEvent event) {
final int action = event.getAction() & MotionEvent.ACTION_MASK;
float x, y, x1, x2, y1, y2, dist1, dist2;
int pointerIndex;

if(event.getPointerCount()==1){
if (action == MotionEvent.ACTION_DOWN) {
x = event.getX();
y = event.getY();
} else {
pointerIndex = event.getActionIndex();
x = event.getX(pointerIndex);
y = event.getY(pointerIndex);
}
mRenderer.setXY(x, y);
requestRender();
}
if(event.getPointerCount()==2){
if (action == MotionEvent.ACTION_POINTER_UP) {
x1 = event.getX(0);
y1 = event.getY(0);
}else {
x1 = event.getX(0);
y1 = event.getY(0);
}
if (action == MotionEvent.ACTION_POINTER_DOWN) {
x2 = event.getX(1);
y2 = event.getY(1);
dist1 = (float)Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
Log.v("DIST1: ", String.valueOf(dist1));
} else {
x2 = event.getX(1);
y2 = event.getY(1);
dist2 = (float)Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
Log.v("DIST2: ", String.valueOf(dist2));
}
ratio = dist2/dist1;//here the dist2 and dist1 is not initialized
}
return true;
}

最佳答案

您正在尝试通过两个单独的触摸事件设置 dist1dist2。您已在 onTouchEvent() 方法中声明了这两个变量。一旦此方法返回,变量就会超出范围并不再存在。

您需要做的是在某个地方声明它们,该位置将持续存在多个触摸事件。最简单的方法是将它们声明为周围类的成员。

private float dist1, dist2;

@Override
public boolean onTouchEvent(MotionEvent event) {
float x, y, x1, x2, y1, y2; // Do not re-declare dist1 and dist2 here
...
}

关于Android OnTouch 方法值无法初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32730289/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com