2012-04-06 13 views
0

私はキャンバスに小さなゲームをデザインしましたが、インターフェースを追加したいと思います(サウンドトグルやその他の設定などのメニューオプションを備えた標準的なもの)。HTML5を使用したキャンバスでのユーザーインターフェイスの設計

Angry Birds html5(http://chrome.angrybirds.com)では、キャンバス以外のhtml要素がなく、インターフェイスを処理できません。

私はhtml5キャンバスでデザインされたゲーム全体、そしてdivsのようなhtml要素を使って完全にデザインされたCSSをスタイリングするのは悪い習慣でしょうか?

私は、代わりに何らかの形でユーザーが画面上でクリックする場所を判断するための何らかの衝突システムを書いていると思います。

誰かが私に正しい方向を向けることができ、私のキャンバスゲームにどの方法(純粋なキャンバスまたはhtml要素)が最適であるかを教えてくれることを願っていました。私の100%懸念しているのはパフォーマンスです。テストには数日かかるでしょう。 enter code here

+0

はい、標準的なリッチUI要素の不完全なエミュレーションを自分で行うのは悪い習慣です。 OSレベルやブラウザレベルのウィジェット(マウスホイールでは動作しないFlashベースのスクロールバーや、システムレベルのスムーズなスクロール設定を尊重しないなど)と同じように実装することは常に不可能です。あなたのユーザーは侵害された期待と相互作用の減少という苦痛を被ります。しかし、これはStack Overflowが設計されているため、主観的な意見ですが、固くて速い答えではありません。明確に答えることができないように投票を終了する。 – Phrogz

答えて

1

ユーザーがキャンバスをクリックした場所を特定することはあまり難しくありません。私はライブラリgeeを使って、それは本当に簡単です。 APIのサンプルに従うだけで、あなたのgee canvasを作成し、マウス位置(g.mouseX、g.mouseY)とマウス操作(g.mousedrag、g.mousedown、g.mouseover、ecc ...)に常にアクセスできます。もちろん、アニメーションの自動リフレッシュ(g.draw)も処理されます。

あなたの質問について:UIをキャンバスにするか、CSSで外に出すかはあなた次第です。通常は、ユーザーインターフェイスのパフォーマンスを気にする必要はなく、コードを実装する方法によってパフォーマンスが異なります。悪い実装では、インターフェイスに使用しているテクノロジに関係なく、パフォーマンスの遅れが発生する可能性があります。

+1

非常に強力なライブラリですが、残念ながら私の目標はキャンバスゲームを作成する際に外部ライブラリを使用することではありません。 – Macmee

+0

あなたは自分のゲームにそのコンテンツを統合することも、jsハンドラを使って自分で実装することもできます... – Saturnix

関連する問題