如何在ActionScript 3中平滑从服务器加载的图像

时间:2013-01-23 09:28:36

标签: image actionscript-3 smoothing

我正在尝试平滑从其他网站加载的缩放图像。图像没有动画。 如果我使用本地图像,它的效果很好。但它似乎不适用于从远程服务器加载的图像。

以下是摘录:

    ...

    //_loader.load(new URLRequest(http://img.example.com/remote.jpg));
    _loader.load(new URLRequest("../assets/local.jpg"));
    _loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);

    ...

protected function completeHandler(event:Event):void
{
    var image:Bitmap = Bitmap(event.target.content);
    image.smoothing = true;
    image.pixelSnapping = "never";
}

经测试,当我加载local.jpg时,它完美无缺。但是当我从服务器加载remote.jpg时,平滑参数不起作用。

任何人都知道为什么? 我到处搜索,但没有人有同样的问题。我没有使用Flash Professional,它是一个用Flash Builder构建的纯ActionScript项目。并且图像不是动画。有线......

2 个答案:

答案 0 :(得分:2)

因为您要从远程服务器提取图像,所以需要在保存图像的Web服务器上设置跨域策略xml文件。

如果没有这个,你就无法改变子像素级别的位图。

示例: http://www.senocular.com/pub/adobe/crossdomain/policyfiles.html

更多细节 http://www.adobe.com/devnet/articles/crossdomain_policy_file_spec.edu.html

答案 1 :(得分:0)

我每天都在搜索,最后找到了答案:

    _loader.load( new URLRequest("http:…." , new LoaderContext(true));

最重要的是load()方法的第二个参数,它是一个LoaderContext。参考: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/Loader.html#load()

虽然我在服务器中设置了crossdomain文件,但没有“new LoaderContext(true)”,但它不会读取跨域文件。这就是为什么它最初不起作用的原因。

如果您遇到同样的问题,希望它对您有所帮助!