2009-07-31 97 views
3

我試圖顯示可以比可用顯示區域大的圖像文件(jpg,png,gif)。我在cCanvas中嵌入了一個Image(用於滾動),但是大圖像並沒有完全顯示。在圖像中顯示巨大的可滾動圖像?

非常大的圖像(例如2480 x 3507)將圖像的頂部或頂部和底部用滾動圖像剪切。

什麼是使用mx.controls.Image可以顯示的最大圖形?

感謝

回答

5

2880像素限制是針對BitmapDatas的,對於DisplayObjects則有8191個像素的限制。 您可以通過使用BitmapDataUnlimited級可以在這裏找到繞過這些限制:http://code.google.com/p/bitmapdataunlimited/

然而,如果性能是我建議你讓這麼大的圖像由多個較小的,而不是重要的。即使您不重複使用這些較小的或者將其從displayList中移除或將它們的visible-property設置爲false,仍然會有性能增益,因爲flash會自動檢測到它們處於舞臺之外,並且不必被渲染。

編輯:

我忘了說,手工創建的BitmapData當2880px限制只適用,圖像比這更大仍然可以加載,和他們的BitmapData(比2880px大)可以訪問和操縱。 你可以很容易有一個位圖數據位圖一樣大口,然後你可以做類似設置它的位圖:

viewportBitmapData.copyPixels(sourceBitmapData, new Rectangle(x,y,viewportWidth, viewPortHeight), new Point(0,0)) 

滾動時,你可以簡單地做上面的每一幀 ,或者如果表現是重要的,你可以在滾動時(如果scrollingDistance小於viewportSize)使用viewportBitmapData.scroll(x,y)來移動整個bitmapData,然後只複製新的像素。

+0

莫非我_load_整個圖像,手動設置滾動條,並只繪製適合視口的圖像數據區域(由滾動條偏移)? – 2009-07-31 18:33:52

4

我讀過的限制是每個維度2880個像素在Flash 9在Flash 10的極限更高。檢查您正在編譯的版本。

您可能會將圖像切分爲更小的部分並將其組裝到Flex中。

0

如果讓這FLASHPLAYER你靶向差異:

版本VS最大bitmapsize

版本的Adobe Flash -9:2880x2880像素
版本的Adobe Flash 10:4096×4096像素
版本的Adobe Flash 11:無限