AMPASIDE / ANPASIDE — IDE для MIDletPascal 22.10.2026 / 16:40 | | Helltar  Пользователь
Сейчас: Offline
Регистрация: 29.11.2011
| GOAR, для этого уже есть встроенная IsMidletPaused: когда игру сворачивают (домой, звонок, переключился на другое приложение), она возвращает true и держит его, пока игру не откроют обратно. основной цикл при этом не останавливается, так что достаточно проверять ее в нем: repeat
{ ... }
if IsMidletPaused then
begin
SaveGame;
while IsMidletPaused do
Delay(100);
end;
until gameOver;
сохранится один раз при сворачивании, дальше игра ждет, пока ее не откроют. если после этого ее смахнули из недавних или система сама выгрузила, все уже сохранено 1) выход из игры так не поймать: процесс завершается сразу, SaveGame выполниться не успеет 2) вылеты тоже, поэтому лучше сохраняться еще и после важных действий или раз в несколько минут чи шо |
22.10.2026 / 16:55 | | GOAR  Пользователь
Сейчас: Offline
Имя: Николай Николаевич Откуда: Одесса, Украина Регистрация: 29.11.2014
| Helltar, блин, не знал о ней даже  ок попробую. |
22.10.2026 / 16:56 | | GOAR  Пользователь
Сейчас: Offline
Имя: Николай Николаевич Откуда: Одесса, Украина Регистрация: 29.11.2014
| Helltar, а так по мимо этого реализовать не получится ?
|
22.10.2026 / 23:37 | | Helltar  Пользователь
Сейчас: Offline
Регистрация: 29.11.2011
| попробуй сначала IsMidletPaused, а если чего-то не хватит, напиши конкретно: в какой момент должно сохраняться и что сейчас не так
|
23.10.2026 / 10:24 | | GOAR  Пользователь
Сейчас: Offline
Имя: Николай Николаевич Откуда: Одесса, Украина Регистрация: 29.11.2014
| Helltar, ок
|
5.11.2026 / 15:57 | | GOAR  Пользователь
Сейчас: Offline
Имя: Николай Николаевич Откуда: Одесса, Украина Регистрация: 29.11.2014
| Helltar, по тихонько юзаю, есть пару идей: 1) для стокового openPlayer нужно добавить функцию громкости звука, так как с sound_volume он не взаимодействует. 2) для sound_play, было бы не плохо добавить функцию , если канал занят, то проиграть на любом свободном. 3) думаю лишним не будет добавить библиотеку для подсчёта фпс, написал либку как начал юзать anpaside. Функции Lib_fps: Вызов функции - процедура fps.Count , сам счётчик вызавется главном цикле. Вывод счётчика - функция fps.countFps возращает текущий фпс. Ограничение кадров - fps.limit(n:integer) ограничит фпс на число n, вызывать не обязательно, но есть на всякий случай. Пример использывания: uses fps; begin repeat fps.count; .... drawtext('fps:'+integertostring(countFps),5,5); fps.limit(60); repaint; delay(1); until false; end. Думаю в проге либа будет полезной 
Прикрепленные файлы: Lib_fps.java  (1.5 кб.) Скачано 20 раз Lib_fps.class (0.92 кб.) Скачано 9 раз |
5.11.2026 / 17:38 | | Helltar  Пользователь
Сейчас: Offline
Регистрация: 29.11.2011
| GOAR, в ANPASIDE 2.7.0 сделал все три: ▶️ Google Play🤖 IzzyOnDroid📦 APK1) громкость стокового плеера: sound_player_volume из Sound. OpenPlayer на каждый звук создает новый плеер на полной громкости, поэтому вызывать после каждого OpenPlayer: uses Sound;
var b: boolean;
...
b := OpenPlayer('/music.mid', 'audio/midi');
sound_player_volume(40); // 0..100
b := StartPlayer;
2) sound_play_free(first, last) играет первый свободный канал из диапазона, а если заняты все - перезапускает тот, что начал играть раньше остальных. канал на паузе не трогает. сам звук не загружает (загрузка дает задержку, ее слышно), так что один эффект заранее открываешь на нескольких каналах: for i := 1 to 3 do ok := sound_open(i, '/shot.wav', 'audio/x-wav');
...
ok := sound_play_free(1, 3); // до трех выстрелов одновременно
возвращает номер канала, который запустился, или -1 3) либу добавил как FPS, но переписал: - https://github.com/Helltar/ANP...ies/src/Lib_fps.java- float на CLDC 1.0 нет, и сборка такой класс не пропускает, теперь все на целых - фпс считается как кадры за последнюю секунду, поэтому число меняется раз в секунду и не прыгает - limit считает от момента, когда кадр должен был начаться, а не от конца прошлого, поэтому 30 и 60 держит ровно. Delay после него не нужен uses FPS;
...
repeat
fps_count;
...
DrawText('fps: ' + IntegerToString(fps_get), 5, 5);
Repaint;
fps_limit(60); // вместо Delay
until false;
все функции тут: https://helltar.com/midletpascal/#bundled-fpsспасибо за идеи |
5.11.2026 / 18:38 | | GOAR  Пользователь
Сейчас: Offline
Имя: Николай Николаевич Откуда: Одесса, Украина Регистрация: 29.11.2014
| Helltar, не за что  спасибо за релиз) |
9.11.2026 / 10:19 | | GOAR  Пользователь
Сейчас: Offline
Имя: Николай Николаевич Откуда: Одесса, Украина Регистрация: 29.11.2014
| Helltar, ещё просьба, если возможно то добавь возможность указывать путь для хранения и открытия проэкта, то постаянно рыться в папке Android/data/com.. не очень удобно. Ещё для библиотеки sound: добавь функцию sound_free_channel:integer; что бы определяла любой свободный канал в данный момент. Буду благодарен  Изменено GOAR (9.11 / 10:19) (всего 1 раз) |
9.11.2026 / 10:41 | | Helltar  Пользователь
Сейчас: Offline
Регистрация: 29.11.2011
| GOAR,
1) в произвольную папку не получится: компилятор - нативная программа, ему нужен обычный путь к файлу, а папка, выбранная через системный диалог, такого пути не дает. а писать куда угодно можно только с разрешением на доступ ко всем файлам, его гугл play дает только файловым менеджерам и т.п. так что проекты остаются в Android/data
2) sound_free_channel для чего хочешь использовать? sound_play_free уже возвращает номер канала, который запустил. если чтобы на свободный канал открыть звук и сразу его проиграть - то при каждом sound_open будет задержка на загрузку, ее слышно, поэтому эффекты лучше открывать заранее. напиши пример, как собираешься ее вызывать
|
 Всего сообщений: 633 Фильтровать сообщения
Поиск по теме
Файлы топика (28)
|