我在做什么
你好,我在将外部图像加载到我的flash(生成器)应用程序中时遇到问题。为了显示图像,我使用了启用平滑的BitmapImage,如下所示:
<s:BitmapImage id="image" smooth="true" smoothingQuality="high" width="100%" height="100%" fillMode="clip" />
我还使用新的flex4.6缩放模式ZOOM显示缩略图,如下所示:
<s:Image id="thumbnail" scaleMode="zoom" smooth="true" smoothingQuality="default" />
我使用SWFLoader预加载外部图像,因为我需要存储原始图像的宽度和高度
问题
当我在本地测试我的应用程序时,一切都很好!但当我在我的域名上运行它时,我发现它显示出了问题。对于在同一个域上运行的图像和Flickr上的图像=没有问题。但其他图像,如来自imageshack显示了以下问题:
- 较大的BitmapImage不平滑
- 缩略图的缩放比例并不像预期的那样。它在thumnail图像的左上角显示得很小。当我把鼠标悬停在它上面时,会显示thumbail,但就像它显示默认的scalemode和fillmode CLIP一样
原因
我真的不确定是什么导致了问题,但我在图像源中看到的唯一区别是域策略。Flickr的crossdomain.xml允许http://farm1.static.flickr.com/crossdomain.xml不像imageshack.ushttp://www.imageshack.us/crossdomain.xml
如果这是原因,那么我不明白为什么图像仍然被加载,但很糟糕。有人知道到底发生了什么吗?有什么解决方案吗?Thnx。
在没有启用正确策略的情况下跨域加载图像有一定的限制。Flash将加载数据,但不允许任何操作,包括平滑。
有很多方法可以解决这个问题。您可以使用服务器端代理,通过本地php或asp页面加载图像。这不是最快的解决方案,但它会起作用。
您也可以尝试使用LoadBytes加载图像,然后将字节数组传递到Loader对象中。它不像使用Flex组件那么漂亮,但它应该会为您恢复一些控制。