2012-03-25 79 views
0

我使用Haxe和actionscript編程,但我是flex的新手。這是我的問題。如果我想在AS3中從服務器獲取鏡像(blazeds),我會將它加載到Loader的加載程序中,然後將其添加到一些例如MovieClip。我應該如何在flex中加載圖像?或者有一些常見的Flex模式來做到這一點?在flex中顯示圖像

另一個問題是。如果我在blazeds服務器上有一個Image,那麼有什麼更好的方法來獲得它:通過Java傳遞它(即讀取它,然後傳遞給客戶端)或直接與Loader

預先感謝您!

回答

2

BlazeDS通常用於發送在AMF中序列化的對象。它看起來像是一個矯枉過正的圖像,因爲它將以ByteArray的形式發送,但您將花費資源處理它。可能是更好的方法,特別是如果圖像是靜態內容時,只要將其作爲靜態文件與運行BlazeDS的任何服務器一起提供即可。

您可以在Flex中使用圖像的不同方式。 Flex框架的一些特別之處是:將其用作Image組件的源,但是,該組件對於許多任務來說有點太大。例如,如果使用此組件,則創建相同圖像的切片將非常無效。有BitmapImage,這是一個輕量級的Image,但它可能不具備所有所需的功能(它不會從InteractiveObject繼承,因此它不能響應鼠標事件,它也僅作爲Spark組件提供。

我最常做的,如果我需要使用的圖片是這樣的:

  1. 如果我需要對它們進行緩存的程序(可重新使用其BitmapData)我寫的一類,它負責裝載和緩存結果

  2. I寫一個非常簡單的組件,擴展UIComponent並使用它的graphics屬性將給定的BitmapData繪製到其中。這通常允許在幾個組件中簡單共享相同的BitmapData

  3. 讓此組件重寫updateDisplayList方法,以便它可以縮放或修剪它使用的BitmapData

我確實使用Loader加載圖像,因爲實際上沒有其他方法可以執行此操作。其他組件如ImageSWFLoaderBitmapImage也使用Loader,它們不會在其上添加任何有價值的內容。可能的話,如果你需要切片9網格功能,那麼在Spark組件中有一些內置的東西,但是我仍然寧願自己做,然後依靠這個組件。 Flex組件不是真正可信的。

1

沒有必要。設置spark.components.Image對象的source屬性將加載圖像。

對於加載swf文件,可以用相同的方式使用mx.controls.SWFLoader

+0

謝謝!還有更常用的'Image'或'Loader'? – Eugeny89 2012-03-25 11:05:47

+0

'圖像'是一個輕量級的版本,沒有麻煩。在幕後,'Image'使用'Loader',但程序員不需要擔心如果你只是想顯示一個圖像 – 2012-03-25 11:19:13