Форум программистов, компьютерный форум CyberForum.ru

Частое переключение крэшит игру - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Обработка ImageView http://www.cyberforum.ru/android-dev/thread1344257.html
Такая проблемка ,есть ImageView при нажатии на imageview должен поменяться фон ,создал папку drawable в него поместил icon.xml в нем <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/tab_phone_sel" android:state_selected="true" /> <item android:drawable="@drawable/tab_phone_sel"...
Программирование Android Система координат акселерометра планшета и телефона Всех с наступающим!!! Была задача, простая до скрежета зубов: импортирую import android.hardware.SensorEvent; далее просто метод, считывающий значения от SensorEvent public void onSensorChanged(SensorEvent event) { builder.setLength(0); builder.append("x: "); builder.append(event.values); http://www.cyberforum.ru/android-dev/thread1343953.html
ООП подмена статик функции в наследнике Программирование Android
Гуру ООП явы, помогите! Есть класс сервиса. В нем есть статик "запускатель" Start. В этом запускателе вызывается другая статик функция с параметром parm. Создаю наследника. Хочу оставить Start, но подменить значение выдаваемое функцией parm! Не получается... Код примерно такой (упростил): // предок public class MyParent extends Service {
Программирование Android Панель контекстных действий без множественного выделения
Возможно ли создать панель контекстных действий для ListView без множественного выделения? В примерах панель контекстных действий создаётся добавлением слушетеля через ListView.setMultiChoiceModeListener и работает только если задать ListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL), при этом можно выделить несколько элементов списка. А мне нужно, чтоб можно было выделять только один...
Программирование Android Backend Сервер для андроид приложений http://www.cyberforum.ru/android-dev/thread1342977.html
нужно построить сервер для обработки запросов с Андроид приложений. Запрос состоит из текста. Сервер должен парсировать текст и в соответствии с базой данных вернуть ответ. на чем лучше писать сервер? Есть ли туториалы на эту тему?
Программирование Android Android studio emulator error HAXM Здравствуйте. Помогите разобраться с эмулятором в андроид студио. Перерыл интернет и на русском, и на английском не получается ничего. Компьютер процессор AMD Fx(tm) - 4350 Quad Core 4.2, видеокарта NVIDIA GeForce GTX 650 Ti, вин 7 х64 Запускаю Run "App" в андроид студио Вылетает следующее: emulator: ERROR: x86 emulation currently requires hardware acceleration! Please ensure Intel HAXM... подробнее

Показать сообщение отдельно
bpv_xquest
0 / 0 / 0
Регистрация: 24.12.2014
Сообщений: 5

Частое переключение крэшит игру - Программирование Android

29.12.2014, 22:12. Просмотров 241. Ответов 0
Метки (Все метки)

Забавы ради я пилю маленькую игрушку под Android, для графики пользуюсь Open GL ES 1. Для удобства обработки текстур у меня есть пара методов, инкапсулирующих необходимые действия Open GL. Вот они:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
public void load() {
    GL10 gl = glGraphics.getGL();
    int[] textureIds = new int[1];
    gl.glGenTextures(1, textureIds, 0);
    textureId = textureIds[0];
    InputStream in = null;
    try {
        in = fileIO.readAsset(fileName);
        Bitmap bitmap = BitmapFactory.decodeStream(in);
        gl.glBindTexture(GL10.GL_TEXTURE_2D, textureId);
        GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);
        gl.glBindTexture(GL10.GL_TEXTURE_2D, 0);
        bitmap.recycle();
    }
    catch(IOException e) {
        throw new RuntimeException("Couldn't load texture '" + fileName + "'", e);
    }
    finally
    {
        if(in != null)
        {
            try {
                in.close();
            }
            catch (IOException e) { }
        }
    }
}
 
public void reload() {
    load();
    setFilters(minFilter, magFilter);
    glGraphics.getGL().glBindTexture(GL10.GL_TEXTURE_2D, 0);
}
 
public void setFilters(int minFilter, int magFilter) {
    this.minFilter = minFilter;
    this.magFilter = magFilter;
}
 
public void bind() {
    GL10 gl = glGraphics.getGL();
    gl.glBindTexture(GL10.GL_TEXTURE_2D, textureId);
    gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, minFilter);
    gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, magFilter);
}
 
public void dispose() {
    GL10 gl = glGraphics.getGL();
    gl.glBindTexture(GL10.GL_TEXTURE_2D, 0);
    int[] textureIds = { textureId };
    gl.glDeleteTextures(1, textureIds, 0);
}
Работа с текстурным атласом начинается с создания экземпляра класса, содержащего эти методы, и вызова load(). Перед отрисовкой спрайтов с текстурами вызывается bind(). Когда есть вероятность потери контекста, я вызываю reload(). Метод dispose() хоронит атлас.

В игре постоянно используются 2 атласа 1136 x 640. Один из них загружается 1 раз и навсегда. А вот другой иногда подменяется аналогичным, но выполненным в других цветах. Происходит это при рестарте уровня, выбор новой раскраски делается рандомно.

Проблема заключается в том, что если юзер часто делает рестарт уровня (насколько часто возможно делать комбо вызов меню + кнопка рестарта + ОК), то раз через 5 уровень начинает грузиться заметно медленнее и медленнее, а потом игра крэшится. Метод dispose() срабатывает вовремя, метод finalize() для класса срабатывает вовремя. И я уже несколько дней ума не приложу в чём может быть проблема. Буду рад, если у кого-то есть дельные мысли.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru