1

アクセラレーションの値をjsからjavaに渡したい。誰かがどこが間違っているか教えてもらえますか?

これが私のコードです:

public class Accelerometer extends JavaScriptObject {

protected Accelerometer(){};

public static native double getCurrentAccelerationX() /*-{
    var x = 0.0;
    $wnd.ondevicemotion = function(event){
    //$wnd.alert(event.accelerationIncludingGravity.x);
    x = event.accelerationIncludingGravity.y; 
    };
    return x;
}-*/;   

}

4

1 に答える 1

0

OK、関数はすぐに返されるため機能しませんが、実際の値は後で使用できるようになります。

クラスが変更されたときに、クラス内のメソッドを呼び出す JSNI 関数を作成する必要があります。

(なお、あなたが投稿したのがあなたの加速度計クラスの範囲であれば、それを拡張する必要はありませんJavaScriptObject。)

次のようなことを試してください:

package foo.bar;

public class Accelerometer {
    public void currentAcceleration(double x, double y) {
        Window.alert("currentAcceleration: " + x + ", " + y);
    }

    public static native void getCurrentAcceleration(Accelerometer p) /*-{
        $wnd.ondevicemotion = function(event) {
            var acc = event.accelerationIncludingGravity;
            $entry( p.@foo.bar.Accelerometer::currentAcceleration(DD)(acc.x, acc.y) );
        };
    }-*/;
}

このメソッドを static ではなく Accelerometer のメンバーにすることもできますが、インスタンスをパラメーターとして関数に渡し、 との混乱を避けることをお勧めしthisます。

于 2012-08-14T14:28:08.537 に答える