2012-12-14 69 views
0

我工作的地圖應用程序,我所遇到的與縮放時我的瓷磚是如何鋪設的問題精靈之間。峽是瓷磚和縮放

這裏是我的結構的基本外觀:

enter image description here

有明顯多了很多事情,但你的想法。現在,我縮放地圖應用程序Sprite以放大。發生縮放時,每個圖塊之間會有間隙。

你可以看到差距在哪裏4塊磚,這裏滿足:

enter image description here

我一切緩存爲位圖。對於每個層(所有擴展Bitmap),我有smoothing設置爲true,pixelSnapping設置爲PixelSnapping.ALWAYS(像素貼緊不應該在這裏幫助,但它不應該傷害任何)。

有沒有人對如何解決這個問題有什麼建議?

(爲了完整起見,地圖應用程序完全是建立使用AS3,它是嵌入在Flex應用程序)

+0

你把什麼容器放入flex中?如何?一段小小的代碼有很長的路要走?:) –

+0

我只是把它放在一個UIComponent中,以便我可以在Flex中使用Sprites(這些地圖也需要在AS3應用程序中可用) –

回答

1

使用瓦片的x,y位置的整數,並正確計算這些位置是最容易修復這裏,除非該圖像在他們接縫! 計算和設置x,y位置的代碼將需要在代碼中正確指出問題。

但是,如果你還正在擴大該容器的精靈,你會想,以確保您規模,使瓷磚的寬度/高度是一個整數值。

例如,如果縮放你的精靈包含這些磚,寬度/各個鋪砌的高度可能並不總是整數,因此創建你所看到接縫。

,你可以在這種情況下做什麼是由整數值調整您的寬度/高度值,考慮到比例,相對於使用的scaleX和scaleY你的容器精靈做你的縮放。

+0

這正是發生的情況。我的父容器,我正在縮放的​​那個容器被四捨五入到最接近的int,但那個容器內的瓦片卻不是。爲了解決這個問題,我不得不單獨縮放每個tile而不是父容器,並確保它們都是圓形的。這意味着重構我的Pan/Zoom類來適應這種變化。 Uncool,但似乎我別無選擇。謝謝您的幫助 –

1

沒有看到你的代碼是很難確定的,但它可能只是一種視覺假象由於縮放 - 例如:一個250像素寬的位圖縮放到155%應該呈現在387.5px寬,但這是不可能的,所以它呈現在388px寬 - 與0.5px部分呈現爲1px在50%阿爾法給出「外觀」爲0.5 PX。

確保縮放的位圖的寬度/高度總是整數可以解決呢?

1

這看起來像一個舍入誤差。

沒有代碼很難知道:這將是一筆巨大的財富給你,我們,如果您貼瓷磚類的準系統例子。在減法過程中,您可能會發現您的解決方案。

我會提供,你應該測試,當你規模發生了什麼和褐藻4 100x100的位圖圖像在不同細粒度的步驟,來檢測,如果它是一個Flash渲染問題,或者在您的類的缺陷。