0

マップ アプリケーションを作成していますが、スケーリング中にタイルがどのように配置されるかという問題に遭遇しました。

これが私の構造の基本的な外観です。

ここに画像の説明を入力

明らかにもっと多くのことが起こっていますが、あなたはアイデアを得る. ここで、地図アプリ Spriteを拡大して拡大します。その拡大縮小が行われると、各タイル間にギャップが生じます。

ここで 4 つのタイルが交わるギャップを確認できます。

ここに画像の説明を入力

すべてをビットマップとしてキャッシュしています。各レイヤー (すべてが拡張Bitmap) について、smoothingtrue にpixelSnapping設定し、PixelSnapping.ALWAYS(ピクセル スナッピングはここでは役に立たないはずですが、害もありません) に設定しました。

この問題を解決する方法について何か提案はありますか?

(完全を期すために、Map アプリは完全に AS3 を使用して構築され、Flex アプリに埋め込まれています)

4

3 に答える 3

1

タイルの x、y 位置に整数を使用し、それらの位置を正しく計算することは、画像に継ぎ目が無い限り、おそらくここでの修正です! コード内の問題を適切に特定するには、x、y 位置を計算して設定するコードが必要です。

ただし、そのコンテナ スプライトをスケーリングする場合も、タイルの幅/高さが整数値になるようにスケーリングする必要があります。

たとえば、これらのタイルを含むスプライトをスケーリングすると、個々のタイルの幅/高さが常に整数になるとは限らないため、目に見える継ぎ目が作成されます。

その場合にできることは、コンテナ スプライトで scaleX と scaleY を使用するのではなく、縦横比を考慮して、幅/高さの値を整数値で調整してスケーリングを行うことです。

于 2012-12-15T02:20:00.060 に答える
1

これは丸め誤差のように見えます。

コードがなければ、それを知るのは困難です。あなたのタイル クラスの必要最小限の例を投稿していただければ、あなたと私たちにとって大きな資産となるでしょう。引き算の過程で、あなたは自分の解を発見するかもしれません。

4 つの 100x100 ビットマップ イメージをさまざまな細かい段階でスケーリングおよびアルギンするとどうなるかをテストして、それが Flash レンダリングの問題なのか、それともクラスの欠陥なのかを検出することをお勧めします。

于 2012-12-18T06:06:52.337 に答える
1

コードを確認しないと確認するのは困難ですが、スケーリングによる視覚的なアーティファクトである可能性があります。たとえば、155% にスケーリングされた幅 250 ピクセルのビットマップは幅 387.5 ピクセルでレンダリングする必要がありますが、それは不可能であるため、幅 388 ピクセルでレンダリングされます。 0.5px の「外観」を与えるために、50% アルファで 1px としてレンダリングされた 0.5px の部分。

スケーリングされたビットマップの幅/高さが常に整数であることを確認すると、解決することがありますか?

于 2012-12-15T01:53:32.037 に答える