2011-03-31 70 views
1

this.container.addElement(myCustomImageInstance as GraphicElement)必須顯示測試圖像。實現BitmapImage的功能而不繼承的最佳方式是什麼?

package com.www 
{ 
    import spark.primitives.BitmapImage; 
    import spark.primitives.supportClasses.GraphicElement; 

    public class BaseTest extends GraphicElement 
    {  
     public function BaseTest() 
     { 
      super(); 
     } 

     /* stuff */ 
    } 

    public class MyCustomImage extends BaseTest 
    { 
     private var _img:BitmapImage = null; 

     public function MyCustomImage() 
     { 
      super(); 
     } 

     public function get img():BitmapImage { 
      if (!_img) { 
       _img = new BitmapImage(); 
       _img.source = /* BitmapData of a test image */; 
      } 
      return _img; 
     } 

     /* It obviously does not work, any ideas? 
     override public function createDisplayObject():DisplayObject { 
      return img.displayObject; 
     } 

     override public function get displayObject():DisplayObject { 
      return img.displayObject; 
     } 
     */ 

    } 

} 

非常感謝您

+0

你的問題不是很清楚 - 請有點多具體的vis。你正在努力完成什麼。 – 2011-03-31 18:57:16

+0

我真的想將(AddElement)MyCustomImage的任何實例添加到DisplayObjectContainer。渲染是BitmapImage顯示對象。 – 2011-04-01 07:35:22

+0

回答我自己的問題。 BaseTest必須擴展Group,例如添加元素BitmapImage。 – 2011-04-28 09:38:03

回答

1

不像mx:Image,火花BitmapImage類不包括用於裝載位圖數據的成員函數。因此,您試圖將URL推入的source屬性僅用於獲取實際的位圖數據(從SWFLoader或Loader或嵌入式圖像文件返回的某些內容)。請參閱AS3文檔:s:BitmapImage#source

雖然技術上可以在嵌入指令中放置一個URL(例如@Embed("http://...image.jpg")),但我假設您使用的是ActionScript而不是MXML,因此您打算動態加載圖像。

在這種情況下,您需要使用mx.controls.Image,或使用單獨的mx.controls.SWFLoaderflash.display.Loader加載所需的圖像。您應該注意加載過程是異步的。

您可能會發現s:BitmapImage像下面的教程有幫助的,它展示瞭如何使用flash.display.Loader,在一起,像MX的功能:圖片: http://polygeek.com/2452_flex_extending-spark-bitmapimage

+0

謝謝你通知問題,但它實際上不是我的問題。我編輯我的消息。 – 2011-04-01 07:33:18

相關問題