0

加速度計の値を測定し、それらの値に基づいてキャラクターの位置を操作するゲームに取り組んでいます。私はX軸でのみ作業しています。メイン アクティビティで加速度計マネージャーを開始しましたが、これらの値を別のクラスで使用する必要があります。明らかに、これらの値は常に変化しています。これらの値を GameView クラスに渡すにはどうすればよいですか?

4

3 に答える 3

0

なぜAndroidのやり方でやらないのですか? :)

タッチ リスナーを実装するときは、次のように設定します。

myView.setOnTouchlistener(this):

これは、タッチされたときにコールバックするようにビューに指示します。独自の方法は次のとおりです。

インターフェイスを定義し、コールバックを使用して、値が変更されたことをクラスに知らせます。

public interface AccelerometerUpdateListener {
    void onUpdate(int arg1, string arg2); ..<----add arguments you want to pass back
}

アクティビティで:

public class MainActivity extends Activity implements AccelerometerUpdateListener {

ArrayList<AccelerometerUpdateListener > listeners = new ArrayList<AccelerometerUpdateListener >();

...


@Override
public void onCreate(Bundle savedInstanceState) 
{
    ...
    myGameClass.setResponseReceivedistener(this);
    ...
}

public void setUpdateListener(AccelerometerUpdateListener listener){
    if (!listeners.contains(listener){
        listeners.add(listener);
    }
}

public void removeUpdateListener(AccelerometerUpdateListener listener){
    if (listeners.contains(listener){
        listeners.remove(listener);
    }
}

値を更新すると

for (AccelerometerUpdateListener listener:listeners){
   listener.onUpdate(arg1, arg2);
}

あなたの受信クラスで:

public class MyGameClass implements AccelerometerUpdateListener {

...

@Override
public void onUpdate(int arg1, string arg2){
    // do whatever you need to do
}

全て記憶ですので誤字脱字はご容赦ください。

于 2013-02-10T22:31:40.830 に答える
0

センサーリスナーを使用したことがある場合は、そのロジックを GameView クラスに移動することを考えるかもしれません。ただし、コードを見ないと完全にはわかりません。サンプルはありますか?

于 2013-02-10T22:16:27.753 に答える
0

それらをアクティビティの静的メンバーとして保存するか、変更があるたびに GameView クラスに渡すことができます (新しい値)

于 2013-02-10T22:04:23.513 に答える