2011-06-06 70 views
1

我有一个按钮,我触摸进入游戏模式。所有按钮都会启动相同的活动,但规则和物理会根据您所触摸的内容进行更改。我可以用什么来追踪哪个按钮被按下?

我想追踪按钮,以便我可以知道人们是否选择了经典模式或训练模式,并相应地设置规则。我将如何做到这一点?

这里是我从菜单中开始我的游戏模式:

MenuElement classic = mElements.get(0); 
    MenuElement training = mElements.get(1); 

     if(touchX > classic.mX && touchX < classic.mX + classic.mBitmap.getWidth() 
      && touchY > classic.mY && touchY < classic.mY + classic.mBitmap.getHeight()) 
     { 
      aux = "Starting game"; 
      Context context = com.Juggle2.Menu.this.getContext(); 
      Intent intent = new Intent(context, StartGame.class); 
      intent.putExtra("rule", 1); 
      context.startActivity(intent); 
     } 

     if(touchX > training.mX && touchX < training.mX + classic.mBitmap.getWidth() 
      && touchY > training.mY && touchY < training.mY + training.mBitmap.getHeight()) 
     { 
      aux = "Starting training"; 
      Context context = com.Juggle2.Menu.this.getContext(); 
      Intent intent = new Intent(context, StartGame.class); 
      intent.putExtra("rule", 2); 
      context.startActivity(intent); 
     } 

这里是哪里就有奇迹:

public class StartGame extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     setContentView(new Panel (this));  //Start the game 

    } 
} 

现在我需要额外的那个包是我的小组访问类,这是一个SurfaceView。


哦,我知道了:

我找到了一种方法做我想要的少了很多步骤

public class Global{ 
    public static int rules = 0; 
} 

而且现在就可以访问这些规则,无论何时何地我希望通过输入Global.rules

这看起来很简单,事后看来。

回答

0

我找到了一种方法做我想要的少了很多步骤

public class Global{ 
    public static int rules = 0; 
} 

而且现在就可以访问这些规则,无论何时何地我想通过键入Global.rules

0

你应该在所有这些完成后使用图书馆。否则,你将不得不 1)收集统计 2)将它们上传到一些地方,你可以看一下结果,这部分可能会非常棘手自行

做不过Google Analytics(分析)已经这样做都是为了你。也许其他人... 这里是starter page

问候, 斯特凡

+0

我不想跟踪按下按钮以达到度量目的,我想跟踪按钮,以便我可以知道人们是否选择了“经典”模式或“训练”模式,并相应地设置规则 – Houseman 2011-06-06 19:49:59

2

您可以添加一个“额外”你Intent s表示启动活动。

Intent intent = new Intent(context, StartGame.class); 
intent.putExtra(String key, X value); 
startActivity(intent); 

然后,您可以通过获得您的StartGame活动这些额外:

Bundle extras = getIntent().getExtras(); 
X value = extras.getX(String key); 

其中X是某种类型的数据(例如,字符串,整数,长,双等)。

更新

对不起,我没看过您的评论不够紧密。这里有一个射击的东西,可能会为你工作:

public class StartGame extends Activity { 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 

    Bundle extras = getIntent().getExtras(); 
    Panel mPanel = new Panel(this, extras); 

    setContentView(mPanel);  //Start the game 
    } 
} 

,改变你的面板构造函数接受一个Bundle参数,所以你必须在初始化这些值。让我知道这是如何工作的。

+0

谢谢,但我的活动只是启动SurfaceView,这是我需要这些变量的地方。我怎样才能将这些变量进一步传递给一个类? – Houseman 2011-06-06 19:59:04

+0

编辑原始答案 – 2011-06-06 20:08:30

+0

再次谢谢,但我没有通过一个活动进一步。该活动仅将内容视图设置为我的SurfaceView。我会发布我的活动,向你展示我在说什么。 *编辑*好的,我用更多的信息编辑了我的问题。我希望这些附加内容最终可以被我的Panel类访问 – Houseman 2011-06-06 20:10:24