试图平滑加载FileReferece的图像,没有运气。以下是我正在使用的代码:
fileRef = new FileReference();
fileRef.addEventListener(Event.COMPLETE, fileLoaded);
private function fileLoaded(e:Event):void{
var ldr:Loader = new Loader();
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, function(e:Event):void{
var bm:Bitmap = Bitmap(e.target.content as Bitmap);
bm.smoothing = true;
img.load(bm)
});
ldr.loadBytes(fileRef.data);
}
<custom:SWFLoaderAdvanced id="img"/>
bm.smoothing 应该对加载的图像进行平滑处理,但由于某种原因,它不会。我在这里错过了什么吗?
注意: SWFLoaderAdvanced 会自动平滑加载在其中的任何图像。除了加载了FileReference的图像之外,它与加载的图像完美配合。
答案 0 :(得分:1)
我相信数据会以byteArray的形式加载到flash中,试试看看会发生什么。
你的话在这里:
var bm:Bitmap = Bitmap(e.target.content as Bitmap);
希望成为:
var bm:Bitmap = new Bitmap(e.target.content as BitmapData);
答案 1 :(得分:0)
我不确定为什么bm.smoothing
不起作用,也许是这样,但效果几乎不可察觉。您可以尝试的一件事是BlurFilter
。
import flash.filters.BlurFilter;
var blur:BlurFilter = new BlurFilter(1, 1, 5);
第一个和第二个参数是blurX
和blurY
,第三个参数是质量。我想你可以将它应用于Bitmap
对象,可能使用这个函数:
bitmapDataObject.applyFilter();
该功能在AS3参考中进一步详述;我不是安装了Flash的电脑,所以我无法测试它是如何工作的。您肯定可以将模糊效果应用于Bitmap
个对象,如果你做的是高质量的非常轻微的效果,它会使图像平滑。查看文档中的BlurFilter
和BitmapData
。
希望这有帮助!