2011-03-31 71 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

相关问题