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

usb_device 
Сейчас: Offline
Naik, это понятно, например в методе онДрав, я например вызываю метод класса enemy.draw(cnv). То есть, циклически будет отрисовываться код внутри метода. А у меня например в игровом цыкле в зависимости напрмер от различных состояний нужно слегка менять интерфейс, то есть уже нужно как то задавать вызов разных методов отрисовок. Вот как это реализовать я не знаю.
- 7.03.2014 / 20:14
usb_device
  Пользователь

usb_device 
Сейчас: Offline
Более понятно напишу. Например в классе screen есть такие методы: drawMap, drawEndScreen, drawStartScreen. Вот я хочу задавать отрисовку их тогда когда это надо. Но в том же методе onDraw можно только жетско задать вызов определнных методов. Разве что использовать какие то глобальные переменные, и в зависимости от их значения вызывать разные методы в onDraw. Но это я считаю не особо хорош подход.
- 7.03.2014 / 20:17
usb_device
  Пользователь

usb_device 
Сейчас: Offline
вроде так:
onDraw(Canvas canvas){
switch(typeDrawScreen){
case 1: gameDraw.drawStartScreen(canvas); break;
case 2: gameDraw.drawMap(canvas); break;
case 3: gameDraw.drawEndScreen(canvas); break;}
}

Изменено usb_device (7.03 / 20:19) (всего 1 раз)
- 7.03.2014 / 21:56
Salat-Cx65
  Пользователь

Salat-Cx65 
Сейчас: Offline
Уважаемые джедаи, хочу поделиться небольшим лайфхаком. Вдруг кто-то работает/будет работать с JNI, делюсь своей шишкой от граблей.
Если нам нужно в С-шном коде получить ява-обьект и потом что-то с ним делать:

  1.  Как делают все
  2.  
  3. //в Яве
  4. public class System {
  5. public System(){}
  6. }
  7.  
  8. //в С
  9.  
  10. jobject createObject(JNIEnv* env)
  11. {
  12.     jclass cls = env->FindClass("java/util/System");
  13.  
  14.     jmethodID mid = env->GetMethodID(cls, "<init>", "()V");
  15.  
  16.     jobject ret = env->NewObject(cls, mid);
  17.  
  18.     env->DeleteLocalRef(cls);
  19.  
  20.     return ret;
  21. }
  22.  
  23.  
  24. Как советую я
  25. //в Яве
  26. public class System {
  27. public System(){}
  28. public static System getInstance(){
  29. return new System();
  30. }
  31. }
  32.  
  33. // в С
  34. jobject createObject(JNIEnv* env)
  35. {
  36.     jclass cls = env->FindClass("java/util/System");
  37.  
  38.     jmethodID mid = env->GetStaticMethodID(cls, "getInstance", "()Ljava/util/System;");
  39.  
  40.     jobject ret = env->CallStaticObjectMethod(cls, mid);
  41.  
  42.     env->DeleteLocalRef(cls);
  43.  
  44.     return ret;
  45. }

Какая разница:
- ссылки на Ява объект в первом случае могут остаться висеть в Ява-хипе если забить их исвободить в С коде. Во втором случае забота о ссылках лежит только на Яве
- затраты на создание новых Ява-объектов в С коде заметно выше чем при создании Ява-обьектов в Ява-коде. Другими словами во втором случае возрастет производительность.
Да прибудет с вами Сила, юные Скайвокеры.

Изменено Salat-Cx65 (7.03 / 21:58) (всего 2 раза)
- 8.03.2014 / 02:05
prayncode
  Пользователь

prayncode 
Сейчас: Offline
Что лучще использовать для загрузки в приложение файлов 3D-моделей для их последующего просмотра? Без анимации, просто лоу-поли и текстурки. Интересует сравнение наиболее популярных библиотек.
- 8.03.2014 / 02:15
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
prayncode, OpenGL, не?
__________________
 let live
- 8.03.2014 / 02:28
prayncode
  Пользователь

prayncode 
Сейчас: Offline
Не.
Я нашёл примерный список: http://stackoverflow.com/quest...engl-obj-file-loader
Но хотелось бы знать, на что стоит обратить внимание в первую очередь.

Изменено prayncode (8.03 / 02:32) (всего 1 раз)
- 8.03.2014 / 02:54
prayncode
  Пользователь

prayncode 
Сейчас: Offline
Хотя, конечно, написание простого парсера obj-файлов займёт не так много усилий. Лучше, наверное, с этого и начну, а там "как пойдёт".
- 8.03.2014 / 10:37
ilyaX2D
  Пользователь

ilyaX2D 
Сейчас: Offline
Всем привет. Раньше у меня ник был Ilya_dio, но не суть) У меня вопрос за мультитач... Я не могу понять, как обработать сразу две области на экране в канвасе(грубо левую и правую одновременно) В прикрепленном файле конструкция из примера со startandroid. Там отслеживается индекс пальцев и координаты, заносятся в стрингбилдер и выводятся на экран... А вот здесь я оставил голую конструкцию и запихал ее в канвас:
  1. int upPI = 0;
  2.   int downPI = 0;
  3.   boolean inTouch = false;
  4.  
  5.  
  6.   @Override
  7.   public boolean onTouch(View view, MotionEvent event) {
  8.     // событие
  9.     int actionMask = event.getActionMasked();
  10.     // индекс касания
  11.     int pointerIndex = event.getActionIndex();
  12.     // число касаний
  13.     int pointerCount = event.getPointerCount();
  14.                 ex = event.getX();
  15.         ey = event.getY();
  16.  
  17.     switch (actionMask) {
  18.     case MotionEvent.ACTION_DOWN: // первое касание
  19.       inTouch = true;
  20.     case MotionEvent.ACTION_POINTER_DOWN: // последующие касания
  21.       downPI = pointerIndex;
  22.       break;
  23.  
  24.     case MotionEvent.ACTION_UP: // прерывание последнего касания
  25.       inTouch = false;
  26.  
  27.     case MotionEvent.ACTION_POINTER_UP: // прерывания касаний
  28.       upPI = pointerIndex;
  29.       break;
  30.  
  31.     case MotionEvent.ACTION_MOVE: // движение
  32.  
  33.  
  34.       for (int i = 0; i < 10; i++) {
  35.         sb.append("Index = " + i);
  36.         if (i < pointerCount) {
  37.         } else {
  38.         }
  39.  
  40.       }
  41.       break;
  42.     }
  43.  
  44.  
  45.     if (inTouch) {
  46.  
  47.     }
  48.  
  49.     return true;
  50.   }
  51. }
Вот щас понять не могу, в каком месте обработать одну область экрана, а где другую... И как это правильно сделать...? Где вписать проверку куда я пальцем тоучу) С одним касанием все ясно, а тут уже голову сломал. Помогите кто-нибудь... Пожалуйста. Ткните пальцем что-куда :)

Изменено ilyaX2D (8.03 / 10:39) (всего 1 раз)


Прикрепленные файлы:
MainActivity.java (2.15 кб.) Скачано 575 раз
- 8.03.2014 / 20:59
usb_device
  Пользователь

usb_device 
Сейчас: Offline
Почему у меня сразу после старта, срабатывает MotionEvent.ACTION_DOWN ? Вот например ACTION_UP и ACTION_MOVE срабатывают после отпускания или движения соответственно. Нажатия обрабатываются в методе onTouchEvent, класса потомка SurfaceView. setFocusable для класса сурфейс установлен в true. Кстати из других классов можно обрабатывать касания?
Наверх  Всего сообщений: 4453
Фильтровать сообщения
Поиск по теме
Файлы топика (184)