0

私の質問は、このようなオーバーラップしたスプライト/ムービークリップについて以前に尋ねられたいくつかの質問と少し似ています。しかし、私の要件はそれらとは少し異なります。

ステージ上のすべてのスプライト(背後に隠れている(またはオーバーラップまたはオクルージョンされている)スプライトを含む)のマウスイベントを処理したいのですが、主な条件は、オクルードされたスプライト(他のスプライトの背後に隠れているスプライト)を処理することです。たとえば、ステージ上にsprite1とsprite2があり、スプライトをクリックするたびにドラッグを開始し、もう一度クリックした後にドラッグを停止したいとします。

これは簡単に行うことができますが、問題と私の主な要件は、sprite1をドラッグしてsprite2の真上にドロップすると、sprite2がsprite1の後ろに隠れてしまうことです。sprite1を最初に移動しないとsprite2をドラッグできません。 。Facebookでzyngaの帝国とallaisゲームをプレイしたことがある場合、それは別々に処理されます。それはそのゲームでどのように機能するかです。マウスよりも1つのスプライトをオーバーラップする2つのスプライトがある場合、オーバーラップするスプライトの背後にあるスプライトでマウスイベントがトリガーされます。イベントは、オーバーラップしているスプライトが1つだけであるか、2つまたは3つであるかに関係なく、前のスプライトではなく最後のスプライトでトリガーされます。これは、不規則な形状のスプライト(長方形だけでなく)に発生します。

誰かがzyngaがこれをどのように実装したかについて私に打撃を与えるか、それを達成する方法を見つけるのを手伝ってくれるなら、それは大きな助けになるでしょう

ありがとう

4

1 に答える 1

0

1つの可能性は、ゲームがそれぞれの個別のスプライトからのクリックイベントをリッスンしていないことです。

ゲームをプログラミングするときは、グリッドシステムを実装することがよくあります。この場合、プログラマーはすべてのスプライトがグリッド上のどこに配置されているかを記録します。次に、プログラマーはグリッドレンダラー全体のクリックをリッスンし、グリッドレコードに対してマウスの位置を参照することにより、選択したオブジェクトを処理できます。

于 2011-09-03T16:40:37.377 に答える