2012-03-03 7 views
0

カスタムのUIフレームワークを使用して、XNAを使用してXBox用のアプリケーションを開発しています。私は、ナビゲーションシステムを開発し、このために は、ナビゲーションシステムは、以下のように動作します:Xbox XNA UIのナビゲーションロジック

システムがページの存在、各ページには、私は彼らを呼ばれると、すべてが 一つ以上のPageTabsを持っている子UI要素が含まれています。

pagetabs 2つの特性を有するが、XとY が(私はポイントを使用している可能性が知っているが、pagetabクラスはまた、いくつかの方法があります)、対象となるシステムの現在の状態に基づいて

を、I入力をチェックし、右側のページタブで要素のイベントを発生させます。 だから私は、この配列があります。そして、 ページ[] { スタート、 終了し、 設定、 ...}

を、私はスタートのように、私の状態のための列挙型を使用、などのページナビゲート要素にアクセスこの:

ページ[スタート] .Navigatables []

これは、ページのすべてのpagetabsを含む配列です。あなたが降りると、Yは増加し、その逆もあります。 X

と同じです。

これはうまくいきます。これは、最大値&分のX値を念頭に置いているので、常に何かが選択されます。

しかし、このシステムには1つの重大な欠陥があります.1つの状態に対してボックス入力しかできません。 しかし、これ、私の状態がスタートです 、私はスタートページに例えば午前言う、と私は2つのボタン、pagetabsで、ポップアップを持っている: (1,1)&(2,1)

システムとしてそれは現在設計されており、選択されたpagetabで現在の状態のすべての要素を探しますが、ポップアップが表示されている場合は、ポップアップだけがナビゲーションを受け入れ、その他はすべてユーザーの入力に反応しないようにする必要がありますゲームパッド)。

PageTabクラスに余分なListを追加しようとしていましたが、これは要素が入力を受け付ける可能性のある 'substates'を含んでいますが、より良い方法が必要です。

私はそれを十分に説明してくれればと思っています。あなたがもっと情報を必要としたら、私はそれを提供して嬉しく思います。

答えて

0

私は余分なZ-インデックスアプローチを使いました。 いくつかの要素に異なるZ-インデックスを使用し、この入力をキャッチすることは魅力のように機能します。 また、フラグを追加しました:IndependentNavigation:いくつかの要素がZ-インデクスに依存しないことを確認します(例えば、ドロップダウンが開いたときに別の場所をクリックする可能性があります)

0

私は、あなたのポップアップがアクティブになっているときにそうするために、あなたのシステムでいくつかの種類のフラグを使用することをお勧めします。他のすべての要素を無効とマークします。ポップアップを閉じると、他の要素が再び有効になります。要素に入力を渡すときにこのフラグをチェックすると、有効な要素にのみ送ることができます。

関連する問題