0

processing.js で記述したアプリケーションにパンとズームを追加しようとしています。ここに私のコードがあります:

boolean surfaceTouchEvent(MotionEvent event) {
pointNum=event.getPointerCount();
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
//User is pressing on finger
float x0=event.getX(0);
float y0=event.getY(0);
mode = false; //DRAG
break;
case MotionEvent.ACTION_POINTER_DOWN:
x1=event.getX(0);x2=event.getX(1);
y1=event.getY(0);y2=event.getY(1);
float z4 = dist(x1,y1,x2,y2);
mode = true; // pinch
break;
case MotionEvent.ACTION_POINTER_UP:
// User is released one of the fingers.

break;
case MotionEvent.ACTION_MOVE:
if (mode = false){
x1=event.getX(0)-x0;
y1=event.getY(0)-y0;
}
if (mode = true){
x1=event.getX(0);x2=event.getX(1);
y1=event.getY(0);y2=event.getY(1);
float z3 = dist(x1,y1,x2,y2);
if ( z3 > z4 ){ 
zoom += 0.1;
}
else if ( z3 < z4){
zoom -= 0.1;  
}
}
break;
}
return super.surfaceTouchEvent(event);
}

ズームの場合は MotionEvent.ACTION_POINTER_DOWN 、パンの場合は MotionEvent.ACTION_DOWN の場合に備えて、古い位置を保存しました。たとえば、ズームで新しい距離と古い距離を比較するには、この古い位置が必要です

これはエラーです:

compile:
    [javac] Compiling 2 source files to C:\DOCUME~1\T0P4568\LOCALS~1\Temp\android893850823480544580.pde\bin\classes
    [javac] C:\DOCUME~1\T0P4568\LOCALS~1\Temp\android893850823480544580.pde\src\changethispackage\beforesubmitting\tothemarket\sketch_may28a\sketch_may28a.java:118: variable x0 might not have been initialized
    [javac] x1=event.getX(0)-x0;
    [javac]                  ^
    [javac] C:\DOCUME~1\T0P4568\LOCALS~1\Temp\android893850823480544580.pde\src\changethispackage\beforesubmitting\tothemarket\sketch_may28a\sketch_may28a.java:119: variable y0 might not have been initialized
    [javac] y1=event.getY(0)-y0;
    [javac]                  ^
    [javac] C:\DOCUME~1\T0P4568\LOCALS~1\Temp\android893850823480544580.pde\src\changethispackage\beforesubmitting\tothemarket\sketch_may28a\sketch_may28a.java:125: variable z4 might not have been initialized
    [javac] if ( z3 > z4 ){
    [javac]           ^
    [javac] 3 errors

助けてください!

4

1 に答える 1

0

わかりました。明らかに、コードをjavaとしてコンパイルするprocessing.orgを使用しています。

解決策は簡単です。事前に初期化x0y0z4デフォルト値に変更します0

これは、Javaコンパイラを満足させるためだけのものです。これは、読み取られた時点ですでに初期化されていることを理解するのに十分なほど賢くはありません。

于 2012-09-23T16:09:08.843 に答える