|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
allowSmoothing для подгружаемых битмапов?
Возможно ли как-то установить сглаживание для подгружаемых с помощью loadMovie JPG ? Или единственный способ подгрузить сглаженную картинку - загружать ее внутри СВФ, где для нее стоит сглаживание?
__________________
Платон мне друг, но истина в вине. |
|
|||||
Регистрация: Apr 2007
Сообщений: 1,369
|
По-мойму эту наболевшую тему нужно выносить в верхний баннер.
Ответ: http://zaynutdinoff.livejournal.com/3331.html На форуме тоже есть темы, вчера-позавчера были тоже. |
|
|||||
Ветеран форума
Регистрация: Jul 2006
Адрес: Грузия, Тбилиси
Сообщений: 2,675
|
sinya, а причём был FAQ?
|
|
|||||
Регистрация: Nov 2008
Сообщений: 18
|
Ошибка
Этот журнал был окончательно уничтожен. "по-мойму" эту тему можно откреплять :-) import flash.display.BitmapData; class TestLoad extends MovieClip { private var a_mc:MovieClip; private var b_mc:MovieClip; private var tmp_mc:MovieClip; private var img_bmp:BitmapData; private var _tmp_counter:Number = 1; private var IMG_WIDTH: Number = 210; private var IMG_HEIGHT: Number = 320; private var mcl:MovieClipLoader; public function TestLoad() { a_mc = MovieClip(this["a_MC"]); b_mc = MovieClip(this["b_MC"]); tmp_mc = createEmptyMovieClip("tmp_MC", 1000); tmp_mc._x = -500; tmp_mc._y = -500; tmp_mc._visible = false; tmp_mc._alpha = 0; mcl = new MovieClipLoader(); mcl.addListener(this); mcl.loadClip("1.jpg", tmp_mc); } private function onLoadInit(mc:MovieClip):Void { fillMc(a_mc, img_bmp); } private function fillMc(img_mc:MovieClip, bmp:BitmapData):Void { bmp = new BitmapData(IMG_WIDTH, IMG_HEIGHT); img_mc.attachBitmap(bmp, 5000, "never", true); trace(bmp); bmp.draw(tmp_mc); bmp = null; delete bmp; } } я правда не видел, что там было... может не то прислал?))) |
|
|||||
... как вариант:
|
|
|||||
[+1.3 02.08.06]
|
Цитата:
Вот код: clip2.maxWidth = 200; clip2.maxHeight = 200; // clip2.loadImage = function(file) { this.image.removeMovieClip(); this.createEmptyMovieClip("image", 0); this.image.loadMovie(file); this.onEnterFrame = function() { var l = this.image.getBytesLoaded(); var t = this.image.getBytesTotal(); if (t>0 && l>=t) { // загрузка закончилась delete this.onEnterFrame; this.resize(); } }; }; // clip2.resize = function() { var ratio_x = this.maxWidth/this.image._width; var ratio_y = this.maxHeight/this.image._height; if (ratio_x<=ratio_y) { // выполняем, если нужно уменьшить, // или увеличить+увеличение разрешено if (ratio_x<1 || this.allowEnlarge) { // ширина равна максимальной // а высота в соответствии с пропорцией this.image._width = this.maxWidth; this.image._yscale = this.image._xscale; } } else { // выполняем, если нужно уменьшить, // или увеличить+увеличение разрешено if (ratio_y<1 || this.allowEnlarge) { // высота равна максимальной // а ширина в соответствии с пропорцией this.image._height = this.maxHeight; this.image._xscale = this.image._yscale; } } // центровка this.image._x = Math.round((this.maxWidth-this.image._width)/2); this.image._y = Math.round((this.maxHeight-this.image._height)/2); }; clip2.loadImage("2.jpg"); Последний раз редактировалось Seraf; 24.05.2010 в 08:37. |
|
|||||
Модрон-ветеринар
|
Поставьте в resize()
в любое место, например, в самом конце, после центровки. Я часто использую это свойство, и все нормально работает. И кстати, лучше используйте MCL вместо loadMovie. |
|
|||||
[+1.3 02.08.06]
|
Попробовал поставить строку после центровки. Не работает. Проверил анимацей растягивания после подгрузки - всё в лесенках.
Последний раз редактировалось Seraf; 24.05.2010 в 16:54. |
|
|||||
Модрон-ветеринар
|
Смотрите вложение.
Используйте MCL, я же писал об этом. Вместо loadVariables используйте класс LoadVars, и тогда у вас будет меньше поводов в ближайшее время обращаться за помощью сюда. Не разносите код по разным слоям. PS. Думаю, что большего сглаживания добиться трудно. А если все же хотите, чтобы выглядело лучше, возьмите размеры, до которых у вас увеличится картинка при максимальном ее развертывании, и пересохраните с этими размерами. Сейчас у вас 2.jpg неоправданно большая. Лучшего сглаживания, чем сделал я с помощью forceSmoothing, вряд ли можно будет добиться в силу указанной причины. PPS. Переход к анимации тоже нужно сделать только после окончания процесса загрузки. То есть написать в ключевом кадре, где стартует загрузка stop(), а продолжить движение - play() - внутри обработчика onLoadInit. Иначе у вас анимация стартует раньше, чем закончится процесс загрузки. Локально прокатит, на сайте могут быть косяки. Конечно, вы ввели дополнительные кадры между началом анимации и кадром, где стартует загрузка, но это плохое решение, если рассчитано только под ожидание загрузки. Даже если это сюжетная пауза, все равно нужно сделать так - stop() в этом кадре и play() внутри onLoadInit, в самом конце, после forceSmoothing. В общем, уменьшайте размер картинки, если это возможно. UPD. Ради пробы уменьшил размер 2.jpg до 500px по ширине, и сразу, несмотря на то, что при увеличении до 400 процентов, как у вас в конце анимации, появляется некая размазанность, все равно выглядит лучше, по крайней мере, сама анимация. Последний раз редактировалось mooncar; 24.05.2010 в 21:00. |
|
|||||
[+1.3 02.08.06]
|
2 mooncar
Весьма признателен за советы. 1-й раз таки решился сделать сам подгрузку файлов (коды, конечно писал не я и в Вашем на 1-й взляд пока много чего непонятно) и текстов т.к. нужно чтобы в последствии заказчик сам заменял фотографии товаров и цен. Там я не могу предугадать насколько большие у них будут исходники ну и врядли они захотят учиться ресайзить фото потому намеренно взял большие. Да в Вашем примере сглаживание в порядке. Имеено так, как если внедрить jpg и включить в его свойствах allow smothing чего я и добивался. Выходит используя loadMovie сглаживания добиться нельзя? forceSmoothing работает только с MCL? Cлышал ещё про мороку с переводом в bitmap. Это сработает в loadMovie? Последний раз редактировалось Seraf; 26.05.2010 в 05:02. |
Часовой пояс GMT +4, время: 02:08. |
|
« Предыдущая тема | Следующая тема » |
|
|