我正在使用Action_Move& ACTION_DOWN
获取x&我在我的应用程序中,所以我可以检查我的画布绘制线是否交叉/触摸但是Action_Move正在获得x&当我的代码全部为循环运行时,y坐标太快,得到另一个x& y坐标和代码再次运行
它在Action_Down中运行良好,因为在经过一段时间后会被触及,所以我的代码有时间做所有工作
我的问题是:如何检查我的所有代码然后移动到另一个坐标&这不会花费太多时间
这是我的一些代码 - >
@Override
public boolean onTouchEvent(MotionEvent event) {
int ac=event.getAction();
int x=(int) event.getX();
int y=(int) event.getY();
int x1=0;int x2=0;
int x3=0;int x4=0;
boolean dont=false;
switch(ac){
case MotionEvent.ACTION_DOWN:
for(int i=art.length-1;i>=0;i--){
if(art[i]<=Integer.valueOf(x)){
x1=art[i];
if(x1+2<x){
x3=x1+31;
dont=true;
}else{
x3=x1+2;
}
break;
}
}
for(int i=aot.length-1;i>=0;i--){
if(aot[i]<=Integer.valueOf(y)){
x2=aot[i];
if(y-x2==2||y-x2==1||y==x2&&dont==true){
x4=x2+2;
}else{
x4=x2+46;
}
break;
}
}
if(count.containsKey(x1+","+x2+","+x3+","+x4)){
AlertDialog mk=new AlertDialog.Builder(getContext()).create();
mk.setMessage("Game Over!");
mk.show();
}
break;
case MotionEvent.ACTION_MOVE:
for(int i=art.length-1;i>=0;i--){
if(art[i]<=Integer.valueOf(x)){
x1=art[i];
if(x1+2<x){
x3=x1+31;
dont=true;
}else{
x3=x1+2;
}
break;
}
}
for(int i=aot.length-1;i>=0;i--){
if(aot[i]<=Integer.valueOf(y)){
x2=aot[i];
if(y-x2==2||y-x2==1||y==x2&&dont==true){
x4=x2+2;
}else{
x4=x2+46;
}
break;
}
}
if(count.containsKey(x1+","+x2+","+x3+","+x4)){
AlertDialog mk=new AlertDialog.Builder(getContext()).create();
mk.setMessage("Game Over!");
mk.show();
}
break;
}
return true;
}
计数包含所有坐标以检查Hashmap中的Rect
&安培;在For Loop 1st中包含可能的x值
第二个包含可能的y值
编辑:
这些是aot&amp; art array of int;
art[0]=7;
art[1]=36;
art[2]=65;
art[3]=94;
art[4]=123;
art[5]=152;
art[6]=181;
art[7]=210;
art[8]=239;
art[9]=268;
art[10]=297;
art[11]=326;
art[12]=355;
art[13]=384;
art[14]=413;
art[15]=442;
art[16]=471;
aot[0]=7;
aot[1]=51;
aot[2]=95;
aot[3]=139;
aot[4]=183;
aot[5]=227;
aot[6]=271;
aot[7]=315;
aot[8]=359;
aot[9]=403;
aot[10]=447;
aot[11]=491;
aot[12]=535;
aot[13]=579;
aot[14]=623;
aot[15]=667;
aot[16]=711;