我正在尝试平滑从其他网站加载的缩放图像。图像没有动画。 如果我使用本地图像,它的效果很好。但它似乎不适用于从远程服务器加载的图像。
以下是摘录:
...
//_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项目。并且图像不是动画。有线......
答案 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)”,但它不会读取跨域文件。这就是为什么它最初不起作用的原因。
如果您遇到同样的问题,希望它对您有所帮助!