То, как иметь дело с анимацией промежутка, указывает, когда модель дискретна

Возможно использование нескольких обработчиков.

import logging
import auxiliary_module

# create logger with 'spam_application'
log = logging.getLogger('spam_application')
log.setLevel(logging.DEBUG)

# create formatter and add it to the handlers
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

# create file handler which logs even debug messages
fh = logging.FileHandler('spam.log')
fh.setLevel(logging.DEBUG)
fh.setFormatter(formatter)
log.addHandler(fh)

# create console handler with a higher log level
ch = logging.StreamHandler()
ch.setLevel(logging.ERROR)
ch.setFormatter(formatter)
log.addHandler(ch)

log.info('creating an instance of auxiliary_module.Auxiliary')
a = auxiliary_module.Auxiliary()
log.info('created an instance of auxiliary_module.Auxiliary')

log.info('calling auxiliary_module.Auxiliary.do_something')
a.do_something()
log.info('finished auxiliary_module.Auxiliary.do_something')

log.info('calling auxiliary_module.some_function()')
auxiliary_module.some_function()
log.info('done with auxiliary_module.some_function()')

# remember to close the handlers
for handler in log.handlers:
    handler.close()
    log.removeFilter(handler)

Пожалуйста, смотрите: https://docs.python.org/2/howto/logging-cookbook.html

8
задан Zarkonnen 3 July 2009 в 12:30
поделиться

1 ответ

Вам понадобится более сильная модель для учета временной составляющей изменений:

  1. Каждый спрайт должен поддерживать очередь анимационных действий, которые он должен выполнять. Добавление анимации в очередь должно происходить с нулевым временем действия (игровое время). Анимация в очереди выполняется покадрово, когда они получают отметку от часов анимации. Очередь позволяет вам отделить модель от графической подсистемы и анимации.

  2. Каждая анимация в очереди несет с собой действие модели, которое нужно выполнить после завершения анимации. Некоторые языки делают это проще, например, с помощью анонимных функций в C # или JavaScript. На других языках вместо этого можно использовать обратный вызов. Действие модели позволяет указать, как модель изменится после завершения анимации.

  3. Спрайты могут нести координаты высокого разрешения (например, с плавающей точкой), а модель остается с целыми числами. Однако спрайтам не нужно ничего знать о правилах игры - с этим справляются поставленные в очередь действия модели завершения анимации.

  4. Сущности модели должны уметь учитывать переходные состояния: появление, исчезновение и перемещение. Это позволяет избежать проверки правил для объектов в переходе.

Чтобы реализовать квест Снаффла, вы могли бы:

  • Пользователь попросил переместить Снаффла на север? - (1) проверьте, что правила разрешают перемещение, (2) поставьте в очередь анимацию перемещения на спрайте Снаффла вместе с действием модели приземления . Переведите модель кролика в переходное состояние движения.

  • Действие модели Снаффла приземления возвращает модель кролика в нормальное состояние и проверяет место приземления и правила. В поисках шляпы, он ставит в очередь анимацию появления картофеля («слияние») и две анимации исчезновения для кролика и шляпы.

  • Действия модели для анимаций исчезновения удаляют кролика и шляпу по завершении.

7
ответ дан 5 December 2019 в 21:21
поделиться
Другие вопросы по тегам:

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