0

我在做什么

您好我在将外部图像加载到我的闪存(构建器)应用程序时遇到问题。为了显示图像,我使用启用了平滑的 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 不平滑。
  • 缩略图没有像它应该的那样缩放。它在缩略图的左上角显示很小。当我将鼠标悬停在它上面时,会显示缩略图,但就像默认缩放模式和填充模式 CLIP 一样

原因?

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

如果这是原因,那么我不明白为什么图像仍在加载但很糟糕。有人知道到底发生了什么吗?有什么解决办法吗?谢谢。

4

1 回答 1

2

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

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

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

于 2012-03-05T03:12:59.033 回答