Почему view.invalidate сразу не перерисовывающий экран в моей игре андроида

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

, например,

svn propset dummyproperty 1 yourfile
svn commit yourfile

, Который выполнит фиксацию, не имея необходимость изменять файл.

Просто удостоверяются, что Вы не используете одно из специального предложения svn: свойства. Что-либо еще должно быть в порядке.

<час>

Редактирование: Много других плакатов спросили, почему кто-то хотел бы сделать это - по-видимому, люди, которые снизили цену, этот ответ также имели те же проблемы.

я не могу говорить за исходный плакат, но один сценарий, где я видел, что используемый при попытке автоматически синхронизировать операции по Визуальному репозиторию Sourcesafe с репозиторием подрывной деятельности.

14
задан 22 September 2009 в 04:07
поделиться

2 ответа

View # invalidate указывает системе перерисовывать (через onDraw) представление, как только основной поток переходит в режим ожидания. То есть, вызов invalidate позволяет перерисовать ваше представление после завершения всей остальной работы. Если код в вашем классе Game вызывается из основного потока и переводит этот поток в спящий режим, вы не просто приостанавливаете рендеринг, вы приостанавливаете обработку ввода (обычно это плохая идея). Как правило, никогда не засыпайте поток, который вы не создавали сами, если вы не знаете, что делаете.

Если вы хотите, чтобы логика игры периодически откладывала с помощью Thread # sleep, запустите его в отдельном thread и используйте view.postInvalidate (), чтобы сигнализировать основному потоку проснуться и вызвать onDraw.

23
ответ дан 1 December 2019 в 07:12
поделиться

Для игр я бы использовал более низкий уровень доступа к графике. LunarLander от Google - отличный тому пример. В основном вам нужно сделать две вещи:

  • вместо View использовать SurfaceView
  • получить обработчик из SurfaceView
  • заменить view.invalidate () на собственный метод repaint (), который будет содержать

     private void repaint () {
     Canvas c = null;
     пытаться {
     c = surfaceHolder.lockCanvas ();
     краска (в);
     } Ну наконец то {
     if (c! = null) {
     surfaceHolder.unlockCanvasAndPost (c);
     }
     }
    }
    

Метод рисования будет содержать то, что у вас есть в View.onDraw на данный момент

15
ответ дан 1 December 2019 в 07:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: