将Android Accelerometer值从MainActivity传递到My GameView类

时间:2013-02-10 21:58:51

标签: android class accelerometer dynamic-variables

我正在开发一款游戏,包括测量加速度计值并根据这些值操纵角色的位置。我只使用X轴。我在我的主要活动中启动了我的加速度计管理器,但我需要在另一个类中使用这些值。显然,这些价值观在不断变化。我怎么能将这些值传递给我的GameView类?

3 个答案:

答案 0 :(得分:0)

您可以将它们保存为活动的静态成员,或者每次更改时将它们传递给GameView类(新值)

答案 1 :(得分:0)

如果您使用过sensorlistener,您可能会考虑将该逻辑移动到GameView类。不过不看你的代码就不完全确定。你有样品吗?

答案 2 :(得分: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
}

全部来自记忆所以请原谅错别字。