4

2D 描画で完全に動作する GUI を備えたアプリケーションがある場合、何を描画し、どこに触れるかを処理するためのベスト プラクティスは何ですか?

理解を深めるための例:
地図を使ったゲームがあります。このマップでは、家などを建てることができます。
拡張可能な情報バーもあります。拡張バーにはゲームに関する情報が表示され、さまざまな値を変更するためのインターフェイスも提供されます。タッチが発生した場合、マップ上の何かを変更するか、バー上の何かを変更するかを判断するために、情報バーが拡張されているかどうかを確認する必要があります。

それは状態パターンによって行われますが、「サブ状態」の可能性があるために少し複雑になる可能性があるため、それが正しいパターンであるかどうかは疑問です。

基本的な質問: State Pattern (GoF から) は、純粋なグラフィカル GUI を処理するためのベスト プラクティスですか?

4

1 に答える 1

2

これが通常機能する方法は、UIがコントロールオブジェクトのツリーであるということです。各コントロールにはいくつかのバウンディングボックスがあり、その上に浮かぶ子コントロールがいくつかある可能性があります。クリックが発生すると、ツリーは上から下に向かって歩きます(つまり、親の前に子供がいて、兄弟が順番に並んでいます)。コントロールごとに、ポイントが境界ボックスと交差するかどうかを確認します。その場合は、コントロールにクリックを処理する機会を与えます(つまり、仮想OnClickメソッド)。もしそうなら、処理を停止し、そのクリックが行われます。それ以外の場合は、それを処理するコントロールに到達するまで歩き続けます。

于 2010-08-23T21:12:13.620 に答える