Экран выбора уровня, такой как Farm Tower, Angry Birds, Cut the Rope и т. Д.? - PullRequest
7 голосов
/ 28 июля 2011

Я хочу сделать экран уровня для моей игры похожим на экран в Angry Birds, Farm Tower и Cut the Rope (часть, где вы выбираете миры, или часть, похожая на виджет галереи).Я хотел знать, какой самый простой способ атаковать это.

Как бы изменить вид Gallery, чтобы он работал для этого?

Ответы [ 2 ]

4 голосов
/ 02 августа 2011

Представления образуют иерархию .Сделайте Gallery из GridView.

Если вы хотите адаптировать код из учебника Галереи, измените ImageView на LevelSetView и создайте LevelSetAdapter, который расширяет BaseAdapter и переопределить его getView метод.Вот начало.

public class HelloLevelsGalleryActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Gallery g = (Gallery) findViewById(R.id.gallery);
        g.setAdapter(new LevelSetAdapter(this));
    }

Чтобы лучше понять адаптеры: ссылка или это видео через 2 минуты.

Также был задан вопрос здесь .

2 голосов
/ 28 июля 2011

Вот идея сделать селектор уровня, используя представление Gallery.

Давайте последуем этому примеру, чтобы у вас была база кода: http://developer.android.com/resources/tutorials/views/hello-gallery.html

Итак, вверхуу вас будут свои экраны уровня.Когда пользователь нажимает на него, этот метод запускается (взято прямо из примера).

gallery.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView parent, View v, int position, long id) {
        startLevel(position);
    }
});

Возможно, ваш startLevel будет выглядеть примерно так:

public void startLevel(int position){
    Resources res = getResources();
    String[] levels = res.getStringArray(R.array.level_classes);
    try{           
        Intent i = new Intent(this, Class.forName(levels[position]));
        startActivity(i);
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }
}

Опять оченьБазовый пример, поскольку я понятия не имею, как вы храните свои уровни, используете ли вы базу данных или нет, и т. д. Кроме того, ваши классы для каждого уровня, вероятно, будут находиться в разных пакетах (например, com.game.levelone, com.game.leveltwo), и вам нужно будет импортировать пакеты классов, чтобы не получить ClassNotFoundException Но это должно помочь вам начать работу в правильном направлении.

...