7.03.2014 / 20:08 | |
usb_device Пользователь Сейчас: Offline
Имя: Денис Откуда: USB Регистрация: 07.01.2013
| Naik, это понятно, например в методе онДрав, я например вызываю метод класса enemy.draw(cnv). То есть, циклически будет отрисовываться код внутри метода. А у меня например в игровом цыкле в зависимости напрмер от различных состояний нужно слегка менять интерфейс, то есть уже нужно как то задавать вызов разных методов отрисовок. Вот как это реализовать я не знаю.
|
7.03.2014 / 20:14 | |
usb_device Пользователь Сейчас: Offline
Имя: Денис Откуда: USB Регистрация: 07.01.2013
| Более понятно напишу. Например в классе screen есть такие методы: drawMap, drawEndScreen, drawStartScreen. Вот я хочу задавать отрисовку их тогда когда это надо. Но в том же методе onDraw можно только жетско задать вызов определнных методов. Разве что использовать какие то глобальные переменные, и в зависимости от их значения вызывать разные методы в onDraw. Но это я считаю не особо хорош подход.
|
7.03.2014 / 20:17 | |
usb_device Пользователь Сейчас: Offline
Имя: Денис Откуда: USB Регистрация: 07.01.2013
| вроде так: 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 Пользователь Сейчас: Offline
Имя: Сергей Откуда: Кременчуг Регистрация: 23.03.2010
| Уважаемые джедаи, хочу поделиться небольшим лайфхаком. Вдруг кто-то работает/будет работать с JNI, делюсь своей шишкой от граблей. Если нам нужно в С-шном коде получить ява-обьект и потом что-то с ним делать: Как делают все
//в Яве
public class System {
public System(){}
}
//в С
jobject createObject(JNIEnv* env)
{
jclass cls = env->FindClass("java/util/System");
jmethodID mid = env->GetMethodID(cls, "<init>", "()V");
jobject ret = env->NewObject(cls, mid);
env->DeleteLocalRef(cls);
return ret;
}
Как советую я
//в Яве
public class System {
public System(){}
public static System getInstance(){
return new System();
}
}
// в С
jobject createObject(JNIEnv* env)
{
jclass cls = env->FindClass("java/util/System");
jmethodID mid = env->GetStaticMethodID(cls, "getInstance", "()Ljava/util/System;");
jobject ret = env->CallStaticObjectMethod(cls, mid);
env->DeleteLocalRef(cls);
return ret;
}
Какая разница: - ссылки на Ява объект в первом случае могут остаться висеть в Ява-хипе если забить их исвободить в С коде. Во втором случае забота о ссылках лежит только на Яве - затраты на создание новых Ява-объектов в С коде заметно выше чем при создании Ява-обьектов в Ява-коде. Другими словами во втором случае возрастет производительность. Да прибудет с вами Сила, юные Скайвокеры. Изменено Salat-Cx65 (7.03 / 21:58) (всего 2 раза) |
8.03.2014 / 02:05 | |
prayncode Пользователь Сейчас: Offline
Регистрация: 08.03.2014
| Что лучще использовать для загрузки в приложение файлов 3D-моделей для их последующего просмотра? Без анимации, просто лоу-поли и текстурки. Интересует сравнение наиболее популярных библиотек.
|
8.03.2014 / 02:15 | |
aNNiMON Супервизор Сейчас: Offline
Имя: Витёк Регистрация: 11.01.2010
| prayncode, OpenGL, не?
__________________
let live |
8.03.2014 / 02:28 | |
prayncode Пользователь Сейчас: Offline
Регистрация: 08.03.2014
| Не. Я нашёл примерный список: http://stackoverflow.com/quest...engl-obj-file-loaderНо хотелось бы знать, на что стоит обратить внимание в первую очередь. Изменено prayncode (8.03 / 02:32) (всего 1 раз) |
8.03.2014 / 02:54 | |
prayncode Пользователь Сейчас: Offline
Регистрация: 08.03.2014
| Хотя, конечно, написание простого парсера obj-файлов займёт не так много усилий. Лучше, наверное, с этого и начну, а там "как пойдёт".
|
8.03.2014 / 10:37 | |
ilyaX2D Пользователь Сейчас: Offline
Регистрация: 07.03.2014
| Всем привет. Раньше у меня ник был Ilya_dio, но не суть) У меня вопрос за мультитач... Я не могу понять, как обработать сразу две области на экране в канвасе(грубо левую и правую одновременно) В прикрепленном файле конструкция из примера со startandroid. Там отслеживается индекс пальцев и координаты, заносятся в стрингбилдер и выводятся на экран... А вот здесь я оставил голую конструкцию и запихал ее в канвас: int upPI = 0;
int downPI = 0;
boolean inTouch = false;
@Override
public boolean onTouch(View view, MotionEvent event) {
// событие
int actionMask = event.getActionMasked();
// индекс касания
int pointerIndex = event.getActionIndex();
// число касаний
int pointerCount = event.getPointerCount();
ex = event.getX();
ey = event.getY();
switch (actionMask) {
case MotionEvent.ACTION_DOWN: // первое касание
inTouch = true;
case MotionEvent.ACTION_POINTER_DOWN: // последующие касания
downPI = pointerIndex;
break;
case MotionEvent.ACTION_UP: // прерывание последнего касания
inTouch = false;
case MotionEvent.ACTION_POINTER_UP: // прерывания касаний
upPI = pointerIndex;
break;
case MotionEvent.ACTION_MOVE: // движение
for (int i = 0; i < 10; i++) {
sb.append("Index = " + i);
if (i < pointerCount) {
} else {
}
}
break;
}
if (inTouch) {
}
return true;
}
}
Вот щас понять не могу, в каком месте обработать одну область экрана, а где другую... И как это правильно сделать...? Где вписать проверку куда я пальцем тоучу) С одним касанием все ясно, а тут уже голову сломал. Помогите кто-нибудь... Пожалуйста. Ткните пальцем что-куда Изменено ilyaX2D (8.03 / 10:39) (всего 1 раз)
Прикрепленные файлы: MainActivity.java (2.15 кб.) Скачано 575 раз |
8.03.2014 / 20:59 | |
usb_device Пользователь Сейчас: Offline
Имя: Денис Откуда: USB Регистрация: 07.01.2013
| Почему у меня сразу после старта, срабатывает MotionEvent.ACTION_DOWN ? Вот например ACTION_UP и ACTION_MOVE срабатывают после отпускания или движения соответственно. Нажатия обрабатываются в методе onTouchEvent, класса потомка SurfaceView. setFocusable для класса сурфейс установлен в true. Кстати из других классов можно обрабатывать касания?
|