我有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"/>
//.....
答案 0 :(得分:1)
由于沙箱安全性错误,您未加载图片。您需要将crossdomain.xml添加到存储图像文件的服务器。
我相信adobe最近放宽了对位图的跨域限制。但是,我认为你仍然无法操纵bytearray数据。
答案 1 :(得分:1)
请发布您的代码。我的猜测是,当您移动swf时,您不会同时移动图像或更改代码以反映新位置。但是,如果没有看到您的代码,我们就无法知道。