2013-03-13 25 views
1

我正在繪製應用程序,現在有一個問題。 有幾千條線,必須繪製,但我也需要以某種方式逐一清除它們。或者,也許 - 清除Sprite圖形內的一個正方形區域。 現在我想想使用數組並將每行都推入新的Sprite,所以我可以將這些新的Sprite添加到父項中。但是這個解決方案看起來很糟糕,會導致爲每一行創建一個新的精靈對象。 有沒有辦法管理沒有創建精靈的行呢?我可以管理雪碧內部的單行嗎?

+0

我現在會警告您,很多行會大幅度地影響應用程序的性能。 – Marty 2013-03-13 01:45:02

回答

1

創建一個代表每一行的數據對象。然後創建一個BitmapData對象,在其中繪製所有行(例如,可以使用fillRect()爲每一行繪製一個非常窄的矩形)。在需要更改表示之前清除矩形(使用fillRect()或floodFill()),然後繪製仍然適用的線條。

用該BitmapData創建一個位圖,並將其添加到舞臺上。

請注意,您應該能夠輕鬆地表現出幾千條性能良好的線路。如果您發現自己創建並銷燬代表每行的數據對象,請查看object pooling

+0

'fillRect()'只適用於正交對齊的行,對於常見的行使用'draw()'。否則,這是一個好方法。 – Vesper 2013-03-13 05:29:18

+0

爲'graphics'對象設置'moveTo()'和'lineTo()'方法時爲什麼'fillRect()'? – Gio 2013-03-13 11:54:27

+0

@Vesper fillRect()僅作爲示例給出。對於對角線,我會在自己的BitmapData上創建一行,並使用比draw()更快的copyPixels()。對於copyPixels()和draw(),你必須有一個源對象,但是對於fillRect(),你不需要。 – 2013-03-13 12:54:02