外部图像在BitmapImage as3中不平滑

时间:2012-03-04 18:12:54

标签: actionscript-3 flex cross-domain bitmapimage smoothing

我在做什么

您好我在将外部图像加载到我的Flash(构建器)应用程序时遇到问题。 为了显示图像,我使用了BitmapImage,并启用了平滑功能:

<s:BitmapImage id="image" smooth="true" smoothingQuality="high" width="100%" height="100%" fillMode="clip" />

我还使用新的flex4.6 scaleMode ZOOM显示缩略图,如下所示:

<s:Image id="thumbnail" scaleMode="zoom" smooth="true" smoothingQuality="default" />

我使用SWFLoader预加载外部图像,因为我需要存储原始图像的宽度和高度

问题

当我在本地测试我的应用程序时,一切正常!但是,当我从我的网络域运行它时,我发现它显示出问题。对于在同一域上运行的图像和来自Flickr的图像=没问题。但是来自imageshack的其他图片显示出以下问题:

  • 较大的BitmapImage不流畅。
  • 缩略图不像它应该的那样缩放。它在thumnail Image的左上角显示为微不足道。当我将鼠标悬停在它上面时,显示的是thumnail,但它会显示默认的scalemode和fillmode CLIP

原因吗

我不确定是什么导致了这个问题,但我在图片来源中看到的唯一区别在于域策略。 Flickr的crossdomain.xml允许所有http://farm1.static.flickr.com/crossdomain.xml不同于imageshack.us http://www.imageshack.us/crossdomain.xml

如果这是原因,那么我不明白为什么图像仍然被加载但是很糟糕。有人知道究竟发生了什么吗?有解决方案吗日Thnx。

1 个答案:

答案 0 :(得分:2)

在未启用正确策略的情况下加载图像跨域存在一定的限制。 Flash将加载数据,但不允许任何操作,包括平滑。

有很多方法可以解决这个问题。您可以使用服务器端代理,通过本地php或asp页面加载图像。它不是最快的解决方案,但它会起作用。

您还可以尝试使用LoadBytes加载图像,然后将字节数组传递给Loader对象。它不如使用Flex组件那么漂亮,但它应该为您恢复一些控制。