PDA

Просмотр полной версии : Загрузка img, в тексте.


getelse
31.08.2009, 17:44
В TextField загружается текст из html/css
Допустим, в тексте есть 2 картинки, размерами 50px 50px и 120px 70px
Они, загружаются в текст, соответственно с такими размерами.

Можно как-нибудь сделать так, задать фиксированную ширину для всех картинок?

(типа, все картинки будут, пропорционально уменьшаться или увеличиваться в длину - относительно фик. размера ширины)

<img src="http://www.site.com/logo.png" width="*" height="*" align="right">

mooncar
31.08.2009, 17:58
Пересчситывайте пропорционально width и height..

getelse
31.08.2009, 18:20
А как сделать так, чтобы размеры картинки задавались автоматически?

всегда, скажем:
(width="60px" размер фиксирован.);
(height="размер не фиксирован; относительно размера width")

Если в блокноте набрать эту строчку

<img src="http://www.google.ru/intl/en_com/images/logo_plain.png" width="216"/>

или

<img src="http://www.google.ru/intl/en_com/images/logo_plain.png" width="116"/>

сохранить и открыть через браузер,
то картинка уменьшается пропорционально (фик.) уменьшению ширины. т. е. все как надо.

А во флеш, если задать только (width, без height) картинка, вообще, не отображается?

mooncar
31.08.2009, 18:52
Почему не тображается? Отображается. Вы попробуйте и увидите. Только размер будет исходный, взятый от картинки.

Добавлено через 5 минут

сохранить и открыть через браузер,
то картинка уменьшается пропорционально (фик.) уменьшению ширины. т. е. все как надо. Ширины чего?
Это с чего бы картинка, заданная в пикселях, будет изменять свой размер в браузере, если мы изменяем размер окна?

getelse
31.08.2009, 19:19
В чисто (h)tml варианте все отображается как надо
Отображается она только в (скажем txt - html) т. е. чисто html варианте.
<img src="http://www.google.ru/intl/en_com/images/logo_plain.png" width="216"/>
http://www.google.ru/intl/en_com/images/logo_plain.png" width="216"

<img src="http://www.google.ru/intl/en_com/images/logo_plain.png" width="116"/>
http://www.google.ru/intl/en_com/images/logo_plain.jpg" width="116"

Если картинка имеет реальный размер 500px 300px
Чтобы пропорционально уменьшить картинку, в (h)tml мне достаточно добавить только (width, без height), вот width="116px" - и картинка с размерами (w500 h300)
пропорционально уменьшилась до w116, h(пропорционально width)

Ширины чего? - реального размера картинки html width 300, реал. размер pic 1024.
Картинка px не должна зависеть от размера браузера. - ясное дело.

Вопрос в другом
А во флеш, если задать только (width, без height) картинка, вообще, не отображается?

mooncar
31.08.2009, 19:31
Вопрос в другом
А во флеш, если задать только (width, без height) картинка, вообще, не отображается?
Этот вопрос - вопрос пяти минут проверки.
И кстати, я вам на него уже ответил.

Добавлено через 6 минут
Если у вас ситуация, что вам можно использовать только width, то перед формированием html-строки можно попробовать использовать предварительную загрузку картинки в пустой мувик, узнать её размеры, и пересчитать высоту.
Увы, флеш - это не браузер.

getelse
31.08.2009, 19:39
mooncar
Почему не тображается? Отображается. Вы попробуйте и увидите. Только размер будет исходный, взятый от картинки.

Как можно изменить этот размер? (дай направление)

mooncar
31.08.2009, 19:43
Нет, не изменить сам размер, а изменить width и height в строке. Если я правильно понял, у вас есть фиксированные ширины (равные какой-то одной величине) картинок в тексте, и вам нужно пропорционально подогнать их высоты, так?....
Если да, то могу подсказать.

getelse
31.08.2009, 19:46
точно!..?

mooncar
31.08.2009, 19:53
var picBaseWidth:Number = 150; //фиксированная ширина картинки

var picNames:Array = new Array(); //массив для имен файлов картинок
var picWidth:Array = new Array(); //массив для ширин
var picHeight:Array = new Array(); //массив для высот
var picNewHeight:Array = new Array(); //массив для новых высот
picNames[1] = 'pic1.jpg';
picNames[2] = 'pic2.jpg';
picNames[3] = 'pic3.jpg';

var mcLoader:MovieClipLoader = new MovieClipLoader();
var listener:Object = new Object();
mcLoader.addListener(listener);

//тут мы узнаем и запоминаем размеры картинок после предвартельной загрузки
listener.onLoadInit= function (target_mc:MovieClip) {
var num:Number = target_mc._parent.picNumber; //извлекаем номер картинки
picWidth[num] = target_mc._width ;
picHeight[num] = target_mc._height ;
var scale:Number = picBaseWidth / target_mc._width ;
picNewHeight[num] = Math.round(target_mc._height * scale); //находим новую высоту
removeMovieClip(target_mc._parent); //удаляем временный мувик со всем содержимым
};

//грузим картинки
for (i = 1; i < picNames.length ; i++) {
var cont_mc:MovieClip = new MovieClip();
cont_mc = this.createEmptyMovieClip('container' + i, this.getNextHighestDepth()); //создаем временный мувик для каждой картинки
cont_mc.createEmptyMovieClip('image', 0); //создаем временный контейнер внутри этого мувика для картинки
cont_mc.picNumber = i; //запоминаем внутри временного мувика номер картинки
mcLoader.loadClip(picNames[i], cont_mc.image); //грузим туда картинку
}


function printImage (num:Number) { //печатает картинку в текстовое поле с именем test1, test2 и т.д.
this['test' + num].htmlText = '<img src="' + picNames[num] + '" width="' + picBaseWidth + '" height="'+ picNewHeight[num] + '"/>';
}


Дополнительный вложенный контейнер image внутри container пришлось сделать, чтобы можно было запомнить номер картинки для использования в onLoadInit, так как из мувика стирается вся информация после загрузки туда нового контента (картинки).
В силу того, что AS выполняется асинхронно, либо используйте функцию, приведенную в конце кода, либо формируйте строку по своим собственным событиям, с учетом того, то полностью новые высоты будут известны только после отработки onLoadInit для всех картинок. Можете прямо в теле onLoadInit формировать html-строку... тогда массивы ширины, высоты и новой высоты вообще не нужны будут.


Добавлено через 1 час 53 минуты
Наверное, лучше это перенести в ветку AS2.0...