Что я могу использовать, чтобы отслеживать, какая кнопка была нажата? - PullRequest
1 голос
/ 06 июня 2011

У меня есть кнопка, которую я нажимаю, чтобы войти в режим игры.Все кнопки запускают одно и то же действие, но правила и физика меняются в зависимости от того, к чему вы прикоснулись.

Я хочу отслеживать нажатие кнопки, чтобы я мог знать, выбрали ли люди классический режим или режим обучения, и установитьправила соответственно.Как бы я это сделал?

Вот как я запускаю свои игровые режимы из меню:

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

    }
}

СейчасМне нужно, чтобы этот набор дополнений был доступен моему классу Panel, который является SurfaceView.


О, я понял:

Я нашел способ сделать то, что хотел внамного меньше шагов

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

И теперь я могу просто получить доступ к этим правилам, когда и где захочу, набрав Global.rules

Это кажется очень простым, задним числом.

Ответы [ 3 ]

2 голосов
/ 06 июня 2011

Вы можете добавить «дополнительные» к вашим 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 - это некоторый тип данных (например, String, int, long, double и т. д.).

Обновление

Извините, я не читал вашикомментируйте достаточно внимательно.Вот пример того, что может сработать для вас:

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
    }
}

И измените конструктор Panel так, чтобы он принимал параметр Bundle, чтобы у вас были эти значения при инициализации.Дайте мне знать, как это работает.

0 голосов
/ 07 июня 2011

Я нашел способ сделать то, что хотел, намного меньше шагов

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

И теперь я могу просто получить доступ к этим правилам в любое время и в любом месте, набрав Global.rules

0 голосов
/ 06 июня 2011

Вы должны использовать библиотеку, где все это делается. В противном случае вам придется 1) собирать статистику 2) загрузить их в какое-то место, где вы можете посмотреть результаты, эту часть может быть сложно сделать самостоятельно

Но Google Analytics уже все это делает для вас. Может быть, другие тоже ... Вот стартовая страница .

С уважением, Stéphane

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...