为什么Flex不会加载我的图像

时间:2011-06-15 20:50:14

标签: flash flex

我有Flex应用程序(不是AIR),它可以加载图像并执行一些效果,应用程序在Flash构建器和调试文件夹中运行良好。但是,当我尝试将* .swf复制到另一个本地文件夹时,出现图像加载问题。

任何人都可以帮助我吗?可能需要指定一些限制或规则吗?

UPDATE 您不了解我,我正在尝试使用FileReference类从桌面加载图片,图片显示成功,但saveAsBitmap()方法后的origBitmap为空

public function loadImage():void
{
  fileRef.addEventListener(Event.SELECT, onFileSelected); 
  var textTypeFilter:FileFilter = new FileFilter("Images (*.jpg, *.jpeg, *.gif,*.png)", "*.jpg; *.jpeg; *.gif; *.png"); 
  fileRef.browse([textTypeFilter]); 
}

public function onFileSelected(evt:Event):void 
{ 

  fileRef.addEventListener(Event.COMPLETE, onComplete); 
  fileRef.load(); 

} 

public function onComplete(evt:Event):void 
{ 
byteArr = fileRef.data as ByteArray;
ldr = new Loader();
ldr.loadBytes(byteArr);
fileRef.removeEventListener(Event.SELECT, onFileSelected);
fileRef.removeEventListener(Event.COMPLETE, onComplete); 
callLater(show);
} 

public function show():void
{    
 currImg.source = ldr;
 callLater(saveAsBitmap);

}
public function saveAsBitmap():void
{
 bd = new BitmapData(currImg.contentWidth * currImg.scaleX, currImg.contentHeight *  currImg.scaleY,true);
 bd.draw(currImg as IBitmapDrawable);
 origBitmap = new Bitmap(bd);
 }

//.....

<mx:Image id="currImg"/>

//.....

2 个答案:

答案 0 :(得分:1)

由于沙箱安全性错误,您未加载图片。您需要将crossdomain.xml添加到存储图像文件的服务器。

我相信adobe最近放宽了对位图的跨域限制。但是,我认为你仍然无法操纵bytearray数据。

答案 1 :(得分:1)

请发布您的代码。我的猜测是,当您移动swf时,您不会同时移动图像或更改代码以反映新位置。但是,如果没有看到您的代码,我们就无法知道。