Этот вопрос идет за мной почти целый год, и я хочу убить его ради меня и ради всего.AS3: Как окончательно сгладить растровое изображение, загруженное с внешнего сервера.
Я работаю над некоторыми рекламными баннерами, которые нужно загружать изображениями с сайта клиента для отображения. Когда я попытался сделать это с помощью AS2, я узнал, что AS2 не позволяет вам это делать. Это ошибка на языке. Существуют способы обхода изображений на локальном сервере, но изображения, загруженные из них, не могут делиться их BitmapData, поэтому эти обходные пути не работают. Я закончил капитуляцию примерно через два месяца, ударив головой о стол и проклиная Макромедиа.
Теперь мы говорим о переходе на AS3 (наконец), и я очень взволнован. Или я был очень взволнован, пока не начал делать некоторые тесты качества изображения и обнаружил, что здесь очень мало изменений качества изображения. Это повторение моих испытаний с AS2: все отлично загружается в IDE, я все взволнован, я перемещаю swfs на тестовый сервер, чтобы запускать их в Интернете, а POOF - jaggies. Джагги повсюду.
Я прочитал ряд решений в Интернете, ни одна из которых не работает. Они включают в себя:
Настройка target.content.smoothing на "true". Отлично работает в среде IDE. Все улучшения исчезают в браузере.
Установка target.scaleX = target.scaleY до 1.01. Он просто разбивает swf.
Добавление «нового LoaderContext (true)» к моим параметрам для команды load. Ничего не делает.
Установка target.content.pixelSnapping на "always". Выглядит отлично в среде IDE, а не в браузере.
Установка файла crossdomain.xml. Изображения появляются - они загружаются, даже если они неровно, поэтому на сервере клиента должен быть установлен файл crossdomain, верно?
Итак, теперь я просто застрял и сокрушен. Может ли кто-нибудь дать представление о моем коде и почему это может быть не так красиво, как должно быть? Вот клиент безопасного варианта быстрой демонстрации я решения (только 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);
Большого спасибо заранее. Любая помощь будет очень оценена.
Update: Вот 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. Но мы все равно можем загружать зубчатые изображения. И эти изображения, загруженные в один и тот же swf, запускаемый в среде IDE, являются гладкими. Я думаю, что мне не хватает понимания какого-либо апокрифического знания здесь, потому что все, что я читаю, указывает на то, что я могу это сделать. Это ОЧЕНЬ смущает.
Проверьте свою версию FP, по крайней мере, проверьте на другом компьютере, зайдите в другой браузер (IE vs FF vs Chrome, возможно, против Opera или других браузеров). Все это повсюду? Кроме того, что такое «jaggies»? Лестницы в линиях? Нет сглаживания? Проверьте также, если 'stage.quality'' 'высокий '', возможно, есть автоматическое значение, которое опускается по некоторым параметрам. – Vesper
Спасибо, Венер! «Ягги», я не имел никакого сглаживания. Все правильно сглажено в среде IDE, но в браузере? Ничего. Я тестировал его в Chrome, Firefox и IE9. На данный момент у меня нет доступа к другому компьютеру, но у моего Игрока 11.8.800.129. Если было переназначено заданное значение, было ли оно переназначено только в браузере, а не в среде IDE? – StormShadow
Да, ему может быть присвоено другое значение в FP браузера, чем в FP отладчика. – Vesper