2008-09-17 10 views
0

Ich muss eine Anwendung in .NET CF mit verschiedenen/einzelnen Formen mit viel Zeichnung/Animation auf jedem Formular machen.Ich würde es vorziehen, ein einziges Update [mein eigenes für Statusverwaltung und so weiter] Funktion, so dass ich kann die verschiedenen Zustände verwalten, so dass mein [J2ME Gaming Code] ohne große Änderungen funktionieren wird. Ich bin zu einigen möglichen Szenarien gekommen. Welcher der einen wird perfekt sein?Mehrere Formulare und ein einzelnes Update, wird es funktionieren?

  1. Verwenden Sie ein einzelnes Formular und fügen Sie die Steuerelemente manuell hinzu oder löschen Sie sie, und verwenden Sie dann einen der Gamelooping-Tricks.
  2. verschiedene Formen erstellen mit Bedienelementen und Anruf Update und Application.DoEvents() in der Haupt-Thread [while (isAppRunning) {Update() Application.DoEvents()}
  3. erstellen Update -. Lackschleife an jedem der Formular wie erforderlich.
  4. Irgendwelche anderen Ideen.

Bitte geben Sie mir Vorschlag zu diesem

Antwort

1

Wenn sie einem Spiel, dann würde mir die meisten der Formen und die Arbeit mit dem Nötigsten fallen, abarbeiten eine Bitmap, wenn möglich und mache, dass entweder durch Überschreiben des Hauptes Forms Paint-Methode oder ein Steuerelement, das sich darin befindet (vielleicht ein Panel). Das wird Ihnen bessere Leistung bringen.

Das Hauptproblem ist, dass das kompakte Framework nicht wirklich für eine Menge UI-Spaß konzipiert ist, erhalten Sie keine doppelte Pufferung kostenlos wie im vollen Rahmen, richtige Transparenz ist eine Schlampe mit WinForm-Steuerelemente zu tun und wenn Wenn Sie etwas zu lange am UI-Thread festhalten, erhalten Sie schwerwiegende Rendering-Störungen. Hölle, Sie könnten sogar diejenigen, wenn Sie zu viel Hintergrundthreads tun! : O

Sie erhalten nie die optimale Leistung durch den expliziten Aufruf von Application.DoEvents. Meine Faustregel ist, dass Sie nur bei der Fehlersuche oder dem Schreiben kleiner Hacks in der Benutzeroberfläche verwenden.

Es könnte das Spiel auf einem Hintergrund-Thread kleben und dann ruft .Invoke auf dem Steuerwert wieder an den Haupt-UI-Thread Marschall Ihre Anzeige verlassen die Benutzeroberfläche mit viel Zeit zu aktualisieren auch zu antworten, während Umgang mit Benutzereingaben. Benutzereingaben sind ein weiterer Grund, warum ich normale winform-Steuerelemente vermeide, da mobile Geräte im Allgemeinen nicht viele Schlüssel haben, ist es sehr nützlich, sie neu zuordnen zu können. Ich vermeide generell Dinge wie TextBoxen mit voreingestellten Schlüsselereignissen/Antworten.

Ich würde auch vermeiden, verschiedene Formulare zu verwenden, da das Anzeigen eines neuen Formulars eine subtile Pause bieten kann. Ich tausche Steuerelemente im Allgemeinen zu einem Hauptformular aus, um dieses Problem beim Schreiben von Geschäftssoftware zu vermeiden.

Am Ende des Tages lohnt es sich, mit verschiedenen Techniken zu experimentieren, um zu sehen, was am Besten funktioniert. Sehen Sie auch, wenn Sie irgendwelche Tipps von Leuten bekommen können, die Spiele auf CF entwickeln, da ich im Allgemeinen nur Geschäftssoftware mache.

HTH!

+0

Vielen Dank .. Lassen Sie mich mit dem Aufruf der Kontrolle versuchen. Nach # 2 habe ich bereits Rendering-Störungen: O – Azlam

Verwandte Themen