Вниз  Android-программирование (1-ые посты)
- 6.03.2014 / 19:57
usb_device
  Пользователь

usb_device 
Сейчас: Offline
Немного разобрался с surfaceview. Думаю сделать простую игру, но столкнулся с тем что немного не пойму как лучше реализовать основной цикл игры, и место где отрисовывать. Будет два потока, один для игрового цикла, второй для управления. Ну а третий поток и так создается при создании сурфейса. Думаю реализовать отдельно логику игры, отдельно рисование. Если есть у кого то исходник простой игры, буду благодарен! Так как не особо понимаю как реализовать взаимосвязь между рисованием\логикой\управлением.
- 6.03.2014 / 20:36
Salat-Cx65
  Пользователь

Salat-Cx65 
Сейчас: Offline
<оффтоп>Самоделкин, ты не Гост?</оффтоп>
- 6.03.2014 / 21:13
Oak
  Пользователь

Oak 
Сейчас: Offline
Salat-Cx65, думаю, ты не разозлишься, если я скажу, что да — он Гост. Далее предлагаю без оффтопа.
__________________
 Эль Презеденте
- 6.03.2014 / 21:45
usb_device
  Пользователь

usb_device 
Сейчас: Offline
Есть метод onDraw, прописанный здесь @Override
     public void run() {
         while (myThreadRun) {
           Canvas c = null;
           try {
           c = myThreadSurfaceHolder.lockCanvas(null);
           synchronized (myThreadSurfaceHolder) {
           myThreadSurfaceView.onDraw(c);
           }
           } finally {
           // do this in a finally so that if an exception is thrown
           // during the above, we don't leave the Surface in an
           // inconsistent state
           if (c != null) {
           myThreadSurfaceHolder.unlockCanvasAndPost(c);
           }
           }
         }
Сам же метод реализуется в классе MySurfaceView extends SurfaceView implements
         SurfaceHolder.Callback
Так же есть класс snake, в котором есть двухмерный массив-карта. Каким образом можно передать этот массив в onDraw что бы отрисовать карту. Использовать прямой доступ к массиву вроде snake.field[x][y] вроде не есть хорошо. Вообще метод может вернуть массив?
- 7.03.2014 / 01:29
Dimon638
  Пользователь

Dimon638 
Сейчас: Offline
Вообще метод может вернуть массив?Конечно может.

  1. //метод, возвращающий массив
  2. public int[][] someMethod(){
  3. return new int[10][10];
  4. }

- 7.03.2014 / 07:06
samodelkin
  Пользователь

samodelkin 
Сейчас: Offline
usb_device (06.03.2014/19:57)
Немного разобрался с surfaceview. Думаю сделать простую игру, но столкнулся с тем что немного не пойму как лучше реализовать основной цикл игры, и место где отрисовывать. Будет два потока, один для иг
Игровой цикл сделай в одном потоке, создай отдельные метод для прорисовки всех обьектов, потом метод обработки игровых событий, а управление сделай в методе онТоуч, например в нем можно осуществить проверку нажатия на одну из половин экрана, с помощью чего можно уже сделать притивное управление, а если добавить три области экрана- левую, среднюю и правую, то можно сделать почти любую игру, также управление можно сделать с помощью кнопок, которые помещаются в разметку вместе с сурфейсом и выводятся на экран.
- 7.03.2014 / 07:07
samodelkin
  Пользователь

samodelkin 
Сейчас: Offline
Salat-Cx65 (06.03.2014/20:36)
<оффтоп>Самоделкин, ты не Гост?</оффтоп>
Сергея Гостова нет, теперь вместо него Сергей Самоделкин.
- 7.03.2014 / 17:27
usb_device
  Пользователь

usb_device 
Сейчас: Offline
samodelkin, но ведь перерисовка, например у меня, в примере выше, происходит в методе onDraw. А если я например хочу сделать отдельный класс, в котором есть разные методы отрисовки разных элементов игры. И вызывать методы этого класса из основного цыкла игры в зависимости от текущих состояний, как тогда мне сделать так, что бы этот класс мог рисовать на экране.
- 7.03.2014 / 18:01
samodelkin
  Пользователь

samodelkin 
Сейчас: Offline
usb_device, для рисования в любом месте класса существует класс SurfaceView, работать с которым очень просто, пример я выложил в раздел с полезными кодами.
- 7.03.2014 / 18:22
Naik
  Пользователь

Naik 
Сейчас: Offline
usb_device, не понял вопрос. Передаешь canvas куда нужно и рисуешь, напр.: enemy.draw(cnv).
Наверх  Всего сообщений: 4453
Фильтровать сообщения
Поиск по теме
Файлы топика (184)