this.container.addElement(myCustomImageInstance as GraphicElement)必须显示测试图像。
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 :(得分:1)
与mx:Image
不同,spark BitmapImage
类不包含用于加载位图数据的成员函数。因此,您尝试将URL推入的source
属性仅用于获取实际位图数据(从SWFLoader或Loader返回的内容或嵌入的图像文件)。请参阅AS3文档:s:BitmapImage#source
虽然技术上可以在embed指令中放置一个URL(例如@Embed("http://...image.jpg")
),但我假设您使用的是ActionScript而不是MXML,那么您打算动态加载图像。
在这种情况下,您需要使用mx.controls.Image,或使用单独的mx.controls.SWFLoader或flash.display.Loader来加载您需要的图片。您应该注意到加载过程是异步的。
您可能会发现以下教程非常有用,它展示了如何将flash.display.Loader
与s:BitmapImage
一起使用,以便像mx一样使用:Image:
http://polygeek.com/2452_flex_extending-spark-bitmapimage