1

キャンバスに描いた 2 次元の迷路があります。迷路上に赤い点が表示され、ユーザーが迷路を移動するときに迷路内の位置が示されます。現在、迷路全体が表示されているため、問題が発生しています。

私はそれを次のようにしたいと思います:

  1. ユーザーがいる迷路の一部だけがはっきりと見えます。
  2. ユーザーが訪れた迷路の以前の部分は表示されますが、「グレー表示」されます。
  3. 迷路を歩き回っている他のエンティティがあります。完全に見える迷路の部分内、つまり、ユーザーの現在の位置のいくつかのセル内からのみ見えるようにする必要があります。訪問した廊下は部分的に見えたままですが、迷路のそれらの部分を歩き回っている実体は見えません。

これには OpacityMask プロパティを使用することを検討してきました。これは、ユーザーの現在の場所の表示部分に実装するのが簡単である可能性がありますが、訪問した領域を「グレー表示」のままにする方法を実装するにはどうすればよいですか?

4

2 に答える 2

2

OpacityMask迷路全体の上に2 つのレイヤーを使用します。

1 つ目は、現在はっきりと見えるものを定義する「現在地」を表し、それ以外はすべて 50% 不透明または「灰色」になります。

2 番目は、あなたがどこにいたかを説明し、どこに行ったかを透明にし、それ以外はすべて黒くします。透明な「いた場所」領域により、ユーザーはその下の「現在地」レイヤーを透視して、現在の場所とそうでない場所の灰色/透明な領域を表示できます。

各レイヤーには、ある程度の複雑さがあります。

  • 1 つ目は単純な形状 (ユーザーの位置を囲む円) ですが、基になるオブジェクトが更新されないようにする必要があります。つまり、灰色の領域にあるものは更新または再描画してはなりません。
  • 2 つ目は簡単な再描画を行いますが (とにかく黒の下は見えません)、形状ははるかに複雑になります。可能であれば、数秒ごとにサンプリングされたすべての「現在地」円の和集合になる可能性があります。
于 2013-08-30T18:51:17.163 に答える