Question

Je dois créer une application dans .NET CF avec des formulaires différents / uniques avec beaucoup de dessins / animations sur chaque formulaire. Je préférerais disposer d'une seule mise à jour [la mienne pour la gestion de l'état, etc.], de sorte que Je peux gérer les différents états, de sorte que mon [Code de jeu J2ME] fonctionne sans trop de changements. Je suis arrivé à quelques scénarios possibles. Lequel de celui-ci sera parfait?

  1. Utilisez un seul formulaire et ajoutez / supprimez les contrôles manuellement, puis utilisez l’une des astuces de jeu.
  2. Créez différents formulaires avec des contrôles et appelez update et application.doEvents () dans le fil principal. [while (isAppRunning) {UPDATE () Application.DoEvents ()}
  3. Créez une boucle de mise à jour - création de peinture sur chaque formulaire, si nécessaire.
  4. Toute autre idée.

Donnez-moi des suggestions à ce sujet

Était-ce utile?

La solution

Si c’est un jeu, j’abandonnerais la plupart des formulaires et travaillerais avec l’essentiel, j’utiliserais un bitmap si possible et le rendrais en redéfinissant la méthode de dessin du formulaire principal ou un contrôle qui y est situé (peut-être un panneau). Cela vous donnera de meilleures performances.

Le problème principal est que le cadre compact n'est pas vraiment conçu pour un plaisir de l'interface utilisateur. Vous n'obtenez pas de double tampon gratuit comme dans le cadre complet, une transparence correcte est un problème pour les contrôles WinForm et si vous accrochez-vous trop longtemps au fil de l'interface utilisateur pour obtenir de graves problèmes de rendu. Enfer, vous pourriez même les obtenir si vous en faites trop sur les threads d'arrière-plan! : O

Vous n'obtiendrez jamais des performances optimales en appelant explicitement Application.DoEvents, ma règle générale consiste à l'utiliser uniquement lors de la résolution de problèmes ou de l'écriture de petites modifications dans l'interface utilisateur.

Cela vaut peut-être la peine de coller le jeu sur un fil d’arrière-plan, puis d’appeler .Invoke sur le contrôle pour lui rappeler le fil principal de l’UI afin de mettre à jour votre affichage, laissant à l’UI suffisamment de temps pour répondre tout en gérant les entrées de l’utilisateur. La saisie de l'utilisateur est une autre raison pour laquelle j'évite les contrôles de forme normaux normaux, car les appareils mobiles n'ont généralement pas beaucoup de clés. Il est donc très utile de pouvoir les remapper. Par conséquent, j'évite en général des choses comme les TextBox qui ont des événements / réponses de touches prédéfinis.

J'éviterais également d'utiliser des formulaires différents, car l'affichage d'un nouveau formulaire peut fournir une pause subtile. J'échange généralement les contrôles vers un formulaire principal pour éviter ce problème lors de l'écriture de logiciels de gestion.

À la fin de la journée, il vaut probablement la peine d’expérimenter diverses techniques pour voir ce qui fonctionne pour le mieux. Voyez également si vous pouvez obtenir des conseils de personnes qui développent des jeux sur CF, car je ne fais généralement que des logiciels de gestion.

HTH!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top