这个问题已经跟踪我将近一年了,我想杀了它,为了我,为了所有人。
我正在处理一些需要从客户网站加载图像以进行显示的横幅广告。当我尝试使用 AS2 执行此操作时,我发现 AS2 不允许您这样做。这是语言中的一个错误。本地服务器上有图片的变通方法,但是从加载的图像不允许共享它们的 BitmapData,因此这些变通方法不起作用。在将头撞在桌子上并诅咒 Macromedia 大约两个月后,我最终投降了。
现在我们正在谈论迁移到 AS3(最终),我真的很兴奋。或者,我真的很兴奋,直到我开始对图像质量进行一些测试,发现这里的图像质量几乎没有变化。这是我对 AS2 试验的重复:一切都在 IDE 中完美加载,我很兴奋,我将 swfs 移动到测试服务器以在线运行它们,然后 POOF - jaggies。到处都是锯齿。
我已经在网上阅读了许多解决方案,但没有一个有效。它们包括:
将 target.content.smoothing 设置为“true”。在 IDE 中运行良好。所有改进都在浏览器中消失。
将 target.scaleX = target.scaleY 设置为 1.01。它只是打破了瑞士法郎。
在加载命令的参数中添加“new LoaderContext(true)”。什么也没做。
将 target.content.pixelSnapping 设置为“始终”。在 IDE 中看起来很完美,而不是在浏览器中。
设置 crossdomain.xml 文件。图像正在显示 - 它们正在被加载,即使是锯齿状的,所以客户端服务器上必须有一个正常工作的跨域文件,对吗?
所以现在我只是卡住了,心碎了。谁能提供有关我的代码的见解,以及为什么它的渲染效果可能不如应有的精美?这是我正在制作的快速演示的客户端安全版本(仅删除了图像 URL,其他一切都与现在一样):
import flash.events.Event;
function completeHandler(e:Event) {
e.target.content.pixelSnapping = "always";
e.target.content.smoothing = true;
}
var imgurl:String = "CLIENT'S IMAGE URL HERE";
var imageLoader01:Loader = new Loader();
var image01:URLRequest = new URLRequest(imgurl);
imageLoader01.load(image01);
imageLoader01.contentLoaderInfo.addEventListener(Event.COMPLETE,completeHandler);
addChild(imageLoader01);
imageLoader01.x = 2;
imageLoader01.y = 0;
imageLoader01.scaleX = imageLoader01.scaleY = .6;
var imageLoader02:Loader = new Loader();
var image02:URLRequest = new URLRequest(imgurl);
imageLoader02.load(image02);
imageLoader02.contentLoaderInfo.addEventListener(Event.COMPLETE,completeHandler);
addChild(imageLoader02);
imageLoader02.x = 100;
imageLoader02.y = 80;
imageLoader02.scaleX = imageLoader02.scaleY = .308;
var imageLoader03:Loader = new Loader();
var image03:URLRequest = new URLRequest(imgurl);
imageLoader03.load(image03);
imageLoader03.contentLoaderInfo.addEventListener(Event.COMPLETE,completeHandler);
addChild(imageLoader03);
imageLoader03.x = 200;
imageLoader03.y = 180;
imageLoader03.scaleX = imageLoader03.scaleY = .152;
var bannerLegend:legend = new legend();
addChild(bannerLegend);
非常感谢您提前。任何帮助将不胜感激。
更新:这是 HTML 嵌入代码:
<div id="swf_mr_sc_wt_si"></div>
<script type="text/javascript">
<!--
var swfurl = "http://DOMAIN_WITHELD_SORRY/static/AS3.swf?m=DEFAULT&t=" + (new Date().getTime());
swfobject.embedSWF(swfurl, "swf_mr_sc_wt_si", 300, 250, "8.0.0", "");
// -->
</script>
<p>
希望这可以帮助。
进一步更新:我们未在 crossdomain.xml 文件中列出。但是我们仍然可以加载锯齿状的图像。这些图像,当加载到在 IDE 中运行的同一个 swf 中时,是平滑的。我想我在这里缺少对某种杜撰知识的理解,因为我读到的所有内容都表明我能够做到这一点。这非常令人困惑。