Перейти к содержанию
Fire Monkey от А до Я
  • 0

Использование GameAudioManager.pas


Rokweb

Вопрос

Здравствуйте.

Речь пойдёт об Android.

Использовал в Berlin данный unit для проигрывания звуков (TMediaPlayer не подходит) и все отлично работало. Сейчас перешел на Tokyo и происходит зависание в цикле:
 

      while not GLoaded do
      begin
        Sleep(10);
        Application.ProcessMessages;
      end;

 

Модуль прикрепил в сообщении.

 

Так же интересует - возможно ли, использовать стиль, созданный в процессе разработки Android приложения - в iOS и если да - то как это правильно реализовать (почти каждый контрол имеет сейчас свой стиль)?

 

Прошу помощи.

GameAudioManager.zip

Изменено пользователем Rokweb
Ссылка на комментарий

Рекомендуемые сообщения

  • 0

В последнем Токио Application.ProcessMessages  использовать под Андройд нельзя = смерть приложению

если нужно выполнять какую-либо операцию и сохранить отзывчивость интерфейса, то это самое время, чтобы перейти на использование потоков (thread'ов). Гуру, поправьте меня, если я не прав

Изменено пользователем sinuke
Ссылка на комментарий
  • 0

я давно говорил, что использование Button.Click(); это беда. При появлении FMX это стало невозможно, и многие плакали. Но вещь правильная

Так же давно я всяко боролся с Application.ProcessMessages. Теперь они по факту запрещены ))) Тенденция, аднака ))))

Ссылка на комментарий
  • 0

стиль нужно менять для каждой системы индивидуально. но основой стиля является большой PNG из которого тащатся картинки для контролов

а его перенести в другой стиль несложно

Ссылка на комментарий
  • 0

Спасибо за отзывчивость! Подскажите, пожалуйста, как тогда можно переделать данный модуль так, чтобы он работал под Android? Закомментировал строку с Application.ProcessMessages - все равно зависает. Не совсем понимаю, как его переделать под потоки.

Изменено пользователем Rokweb
Ссылка на комментарий
  • 0

у вас алгоритм очень странно выглядит

начать загрузку в потоке 1

пока не загрузилось, каждые 10 мсек уходить и возвращаться в поток 1

т.к. загрузка в потоке 1, а мы из него так и не выходили, то ничего и не загрузится...

 

на самом-то деле алгоритм простой как мычание

запустить загрузку

когда закончится загрузка (событие onLoadComplete) делать что-то там, что надо делать дальше

ну или запустить там TThread.Queue(procedure begin  {что делать дальше} end);

тогда это запустится после выхода из onLoadComplete

Ссылка на комментарий
  • 0

ну и хорошая идея вместо обвешивания {DEFINE} в одном файле сделать базовый класс и двух наследников раскидать по модулям xxx.android.pas и xxx.ios.pas

и в конечном файле просто uses {$IFDEF android} xxx.android.pas {$endif} {$ifdef ios} xxx.ios.pas {$endif}

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...