У меня проблемы с каждым учебником по графике Android / SurfaceView - PullRequest
0 голосов
/ 23 февраля 2010

Я пытаюсь научиться создавать видеоигры на Android, и поэтому мне нужно получить несколько приличных обучающих программ о том, как создавать графику на Android с использованием объекта SurfaceView. Однако каждый учебник по графике, который я пробовал (в основном, материал SurfaceView), потерпел неудачу. Обратите внимание, что я не хочу использовать XML, так как он не в моем элементе, и Google просто хочет продать эту технику на рекламе аккуратности, что я могу сделать программно.

Одна из основных проблем, с которыми я столкнулся, заключается в том, что существует множество учебных пособий, как от Google, так и от сторонних разработчиков, с кодом, который использует команду import android.opengl.GLSurfaceView или либо импортирует подмножество GLSurfaceView, но оно никогда не работает. на моей IDE. Каждый раз, когда я пытаюсь импортировать любой из них, Eclipse хочет сказать, что он в основном не распознает этот пакет. Странно то, что я МОГУ импортировать android.opengl. *, Хотя это все еще приводит к тому, что часть кода в этих пакетах ссылается на нераспознанные типы и / или методы.

Попытавшись некоторое время дурачиться с первой проблемой, я заметил, что пример Lunar Lander не пытался импортировать ни одну из этих двух библиотек проблем. Поэтому я включил код и ссылки на ресурсы для этого в один из моих детских проектов, оставив все остальное в этом проекте неиспользованным. Конечно, я изменил, в каком пакете был код Lunar Lander, и изменил имя класса в LunarLander.java или как угодно, но это не должно иметь значения. Я смог получить вещь, чтобы построить в Eclipse. Однако, когда я пошел, чтобы управлять этим, это не сделало бы ничего, кроме крушения. Не показывая графики Lunar Lander или чего-либо еще, эмулятор просто выдаст мне это сообщение об ошибке, в основном, сообщая, что мое приложение неожиданно перестало работать и заставляет меня закрыть приложение.

1) Каковы проблемы с пакетом opengl.GLSurfaceView? 2) Как обстоят дела с примером Lunar Lander? 3) Где хороший, твердый учебник о том, как делать видеоигры для Android

Спасибо.

1 Ответ

3 голосов
/ 23 февраля 2010

Вы строите игры в 2D или 3D? Я не могу говорить о 3D, но я создал несколько простых 2D-игр, и SurfaceView был скорее помехой, чем помощью. Эмулятор имитирует только одно ядро, поэтому вы не получите выигрыша в производительности на чертеже. Более того, из-за непроизводительных затрат и обслуживания потоков приходится сталкиваться с трудностями, которые мешают многим возможностям (я потратил несколько часов, пытаясь запустить диалог GameOver из различных конфигураций, и дополнительный поток не позволил этому произойти).

Альтернативой SurfaceView будет реализация собственного класса, расширяющего View, и переопределение onDraw (Canvas) для рисования того, что вам нравится (это то, что делали я и мои друзья).

Чтобы ответить на ваши очки:

  • Я никогда не работал в 3D и не использовал Android OpenGL, но Eclipse (если это то, что вы используете) может быть немного темпераментным с поиском ресурсов Android. Загружаются ли остальные уроки?

  • Lunar Lander показывает, как создать и уничтожить представление, расширяющее SurfaceView и SurfaceHandler. Опять же, могут быть контексты, для которых SurfaceView является отличным выбором, но если вы только начинаете с Android и строите простые 2D-игры, я не думаю, что это существенно.

  • Хорошие учебники трудно найти. Я научился достаточно, чтобы эту 2D-игру потратить на несколько часов с электронной книгой Hello Android .

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

Удачи!

...