2008-09-17 9 views
0

私はフォームごとに多くの描画/アニメーションで異なる/単一のフォームで.NET CFでアプリケーションを作成する必要があります。私は単一の更新[状態管理などのために自分自身の]機能を持つことを望みます。さまざまな状態を管理することができるので、私の[J2MEゲームコード]はあまり変更することなく動作します。私はいくつかのシナリオを考えました。どちらが完璧なのでしょうか?複数のフォームと1つの更新プログラムが動作しますか?

  1. コントロールを手動で追加/削除してから、操作を追加してください。
  2. メインスレッドで)(コントロールと異なる形式を作成し、更新及びapplication.doEventsを呼び出し[ながら(isAppRunning){UPDATE()Application.DoEvents()}
  3. を更新作成 - のそれぞれに塗料ループ必要に応じて
  4. 他のアイデア。

そのゲームは、私は、裸の必需品でフォームや作業のほとんどをドロップ可能な場合は、ビットマップをオフに働くとのいずれかでメインをオーバーライドすることをレンダリングしたい場合は私にこの

答えて

1

に関する提案を教えてくださいフォームのペイントメソッドまたはその中に存在するコントロール(おそらくパネル)。それはより良いパフォーマンスを与えるでしょう。

主な問題は、コンパクトなフレームワークは実際には完全なフレームワークのように自由にダブルバッファリングを得られない多くのUIの楽しみのために設計されていないことです。適切な透明性はWinFormコントロールUIスレッドをあまりにも長く保持すると、深刻なレンダリングの不具合が発生します。あなたがバックグラウンドスレッドであまりにも多くを行う場合、地獄を得るかもしれません! :Oあなたは決して明示的に呼び出しApplication.DoEventsから最適なパフォーマンスを得るために行くんだ

は、親指の私のルールは唯一のことを使用する場合には、トラブルシューティングやUIに少しハックを書きます。

バックグラウンドスレッドでゲームを固執してから、コントロールの.Invokeを呼び出してメインのUIスレッドにマーシャリングして、ユーザーの入力を処理しながら応答するのに十分な時間をUIに残すようにします。 ユーザー入力は、一般的なwinformコントロールを避けるもう一つの理由です。モバイルデバイスには一般的に多くのキーがないので、それらを再マップするのに非常に便利です。したがって、キーイベント/応答がプリセットされているTextBoxなどは避けてください。

私も微妙な一時停止を提供できる新しい形を示すよう異なる形式を使用して避けるだろう、私は一般的にビジネスソフトウェアを書くときに、この問題を回避するために、メインフォームにコントロールを入れ替えます。それはおそらく最高のために働くかを見るために様々な技術を実験する価値がある一日の終わりに

。私が一般的にビジネスソフトウェアだけを行うので、CF上でゲームを開発する人々からヒントを得ることができるかどうかを確認してください。

HTH!

+0

ありがとうございました..私はコントロールを呼び出すとしよう。 #2の後、すでにレンダリングの不具合があります:O – Azlam