2008-09-17 1 views
0

Мне нужно сделать приложение в .NET CF с разными/одиночными формами с большим количеством рисования/анимации для каждой формы. Я бы предпочел иметь одно обновление [мое собственное для управления состоянием и т. Д.], Чтобы i может управлять разными состояниями, так что мой [J2ME Gaming Code] будет работать без особых изменений. Я пришел к некоторым возможным сценариям. Какой из них будет идеальным?Несколько форм и одно обновление, будет ли оно работать?

  1. Имейте одну форму и вручную добавьте/удалите элементы управления, а затем используйте любой из трюков gamelooping.
  2. Создайте различные формы с элементами управления и вызовите update и application.doEvents() в основном потоке. [While (isAppRunning) {UPDATE() Application.DoEvents()}
  3. Создайте обновление - цикл рисования на каждом из форму по мере необходимости.
  4. Другие идеи.

Пожалуйста, дайте мне предложение относительно этого

ответ

1

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

Основная проблема заключается в том, что компактный каркас не предназначен для большого количества пользовательских интерфейсов. Вы не получаете двойную буферизацию бесплатно, как в полной структуре, правильная прозрачность - это сука, использующая элементы управления WinForm, и если вы держитесь за поток пользовательского интерфейса слишком долго, вы получите серьезные сбои в рендеринге. Черт, вы можете даже получить их, если будете делать слишком много на фоне потоков! : O

Вы никогда не получите оптимальную производительность при явном вызове Application.DoEvents, мое эмпирическое правило должно использовать это только при сбое или написании небольших хаков в пользовательском интерфейсе.

Возможно, стоит приклеить игру к фоновому потоку, а затем вызвать. Переключить элемент управления на маршал обратно к основному потоку пользовательского интерфейса, чтобы обновить ваш дисплей, оставляя пользовательский интерфейс с достаточным количеством времени для ответа, одновременно обрабатывая ввод пользователя. Ввод пользователя - еще одна причина, по которой я избегаю обычных элементов управления winform, поскольку на мобильных устройствах обычно не так много ключей, что очень полезно для их переназначения, поэтому я обычно избегаю таких вещей, как TextBoxes, которые предварительно задали ключевые события/ответы.

Я бы также избегал использовать разные формы, поскольку показ новой формы может обеспечить тонкую паузу, я обычно меняю элементы управления на основную форму, чтобы избежать этой проблемы при написании программного обеспечения для бизнеса.

В конце дня, вероятно, стоит поэкспериментировать с различными приемами, чтобы узнать, что работает для лучшего. Также посмотрите, можете ли вы получить какие-либо советы от людей, которые разрабатывают игры на CF, поскольку я, как правило, занимаюсь только программным обеспечением для бизнеса.

HTH!

+0

Большое спасибо. Позвольте мне попробовать с помощью управления. После # 2 у меня уже возникают отказы: O – Azlam 2008-09-18 03:10:08

Смежные вопросы