Когда я начинаю игру, черный экран наступает некоторое время, потому что ресурсы загружаются. Я внимательно изучил учебное пособие, в котором показано, как показывать индикатор выполнения, а ведущие ресурсы я следил за ним, и теперь я вижу индикатор выполнения. Но проблема в том, что когда индикатор выполнения видится, все остальное останавливается. И ничего не происходит. Только черный экран и индикатор выполнения. Может ли кто-нибудь сказать мне, почему все остановлено и почему loadresources и методы loadscene не работают? Пожалуйста, предоставьте решение.Индикатор выполнения при загрузке Текстуры в AndEngine
ответ
Вам необходимо загрузить свои ресурсы в рабочий поток. Хорошая утилита для этого - AsyncTask. В руководстве Processes and Threads есть объяснение, почему вам нужно что-то подобное, а также пример кода, показывающий, как сделать простой AsyncTask
, который может быть именно тем, что вам нужно.
От Engine.java:
public void onDrawFrame(final GLState pGLState) throws InterruptedException {
final EngineLock engineLock = this.mEngineLock;
engineLock.lock();
try {
engineLock.waitUntilCanDraw();
this.mVertexBufferObjectManager.updateVertexBufferObjects(pGLState);
this.mTextureManager.updateTextures(pGLState);
this.mFontManager.updateFonts(pGLState);
this.onUpdateDrawHandlers(pGLState, this.mCamera);
this.onDrawScene(pGLState, this.mCamera);
engineLock.notifyCanUpdate();
} finally {
engineLock.unlock();
}
}
И вот почему виснет двигателя и пользовательский интерфейс застревает. Можно отображать экран загрузки, пока текстуры загружаются в аппаратное обеспечение, без замерзания, скажем, ProgressBar
. Это непросто и требует большого количества кода, но это возможно и не требует сумасшедших хаков, просто какая-то логика.
Вы должны иметь Resources Manager (RM) и Scene Manager (SM), которые работают вместе (с AsyncTasks
) и отвечают за загрузку текстур для текущей сцены. Поскольку у вас есть BaseGameActivity
, вы можете использовать этот пример Activity
, чтобы показать полноэкранный Dialog
с индикатором выполнения. Логика:
- SM просит показать Scene
- SM показывает нагрузку
Dialog
- SM асинхронно говорит RM, чтобы загрузить все Scene A ресурсов на аппаратную (для каждой текстуры для Сцена А, texture.load)
- РМ "onSceneTexturesLoadComplete" говорит SM, которые загружены все текстуры
Поскольку texture.load не гарантирует фактическую загрузку текстуры, вам нужно будет иметь TryToDismissDialog
, который расширяет TimerTask
. Это TryToDismissDialog
время от времени будет запрашивать Scene текстуры и проверить, если они действительно загружены:
if (texturePack.getTexture().isLoadedToHardware()) {
texturesLoaded++;
}
Если все текстуры загружены вы уволить Dialog
и вуаля вы увидите Сцена готова.
Надеюсь, это поможет
ps: на самом деле это связано с некоторыми строками кода, я только что разместил здесь быстрые шаги/руководство/псевдокод. Я не буду публиковать окончательное решение, потому что оно довольно тяжелое и «связанное с проектом».
- 1. Индикатор выполнения при загрузке
- 2. Индикатор выполнения TYPO3 при загрузке
- 3. Индикатор выполнения при загрузке webView
- 4. Индикатор выполнения при загрузке страниц
- 5. индикатор выполнения при загрузке изображения
- 6. Индикатор выполнения при загрузке апплета
- 7. Показывать индикатор выполнения при загрузке
- 8. Индикатор выполнения при загрузке файла в Dropbox
- 9. Индикатор выполнения при загрузке Xml-файла
- 10. Показывать индикатор выполнения при загрузке Activity
- 11. Показывать горизонтальный индикатор выполнения при загрузке страницы
- 12. Индикатор выполнения при загрузке файлов по URL
- 13. индикатор выполнения не отвечает при загрузке
- 14. Как показать индикатор выполнения при загрузке страницы
- 15. индикатор выполнения не обновляется при загрузке pdf
- 16. Цель C: индикатор выполнения при загрузке
- 17. Показать индикатор выполнения при загрузке JSON - Android
- 18. индикатор выполнения при загрузке веб-страницы/android
- 19. показывая индикатор выполнения при загрузке видео
- 20. Понимание нагрузки текстуры andengine
- 21. AndEngine текстуры очень странно
- 22. Ошибка текстуры AndEngine
- 23. Ошибка AndEngine при загрузке библиотеки
- 24. Изменение пикселов текстуры в AndEngine
- 25. Индикатор выполнения в панели уведомлений при загрузке изображения?
- 26. Как показать индикатор выполнения при загрузке файла в android retrofit
- 27. как включить индикатор выполнения при загрузке пользовательского списка в android
- 28. Показать индикатор выполнения при загрузке веб-содержимого в wp7
- 29. Показывать индикатор выполнения при загрузке файла в dropbox от publishProgress
- 30. показать индикатор выполнения при загрузке изображений в android
Фактически сам двигатель загружает ресурсы. Мои вопросы касаются того, почему движок приостановлен, когда на нем есть диалог или индикатор выполнения. Как я могу возобновить его вручную. –
@Jawad Amjad проверить мой ответ ниже. Надеюсь, поможет ;) – GuilhE