PDA

Просмотр полной версии : заданный размер клипа


Punk T-34
24.05.2006, 20:11
Я подгружаю картинку извне в, создаваемый через createEmptyMovieClip("my-picture", 0), клип. Как мне задать конкретный размер для клипа my-picture? И уменьшится ли при этом рисунок?
(нужно, чтоб бОльшая сторона подгружаемой картинки соответствовала одной из сторон клипа - чтоб картинка не обрезалась)

Nirth
24.05.2006, 20:13
эх в faq столько примеров, но люди любят по паре часов ждать пока им ответят.

Punk T-34
24.05.2006, 21:41
Но в FAQ не написано как ресайзить картинку или "выдирать" из неё кусок.

Ресайз делается через mx.transitions.TransitionManager.start() ?

KUZEN
24.05.2006, 22:33
Ресайз делается через _xscale и _yscale , а уж с твином или без дело твоё

Punk T-34
25.05.2006, 00:04
я так и делаю... но я делаю что-то не то и потому у меня не получаеться.
Вот:
у меня картинка грузится в клип, который генерируется кодом createEmptyMovieClip("my-picture", 0)
далее я, логически подумав, присваиваю этому клипу, собственно, нужные размеры:
my-picture._xscale %= 175;
my-picture._yscale %= 175;
Не работает.
Примечание: должно получиться что-то вроде фото-галереи с пролистыванием картинок.

KUZEN
25.05.2006, 00:14
Во первых что это за %= , к чему это здесь не понятно ?! а размеры менять нужно только после полной загрузки картинки, т.е. нужен прелоадер, и изменять с помощью обычного присваивания " = " а не " %= "

Nirth
25.05.2006, 00:42
в факе кстати есть статья про прелоадеры =))))

Punk T-34
25.05.2006, 01:01
Это часть приложения, которое будет использоваться только на локальных машинах. В таком случае прелоадер всё равно нужен?

%= - это присваивание значения по модулю. Ё-моё, вот недавно с ним делал - получалось. Щас попробывал - не работает. Чё за?..
если делать просто через "=" то присваивается значение в % от исходного, а мне нужны строго заданные размеры для каждой картинки (потому и делал я через %=).

Nidl
25.05.2006, 01:18
пример :
_root.createEmptyMovieClip("girls",1).loadMovie("image45.jpg");
_root.girls._x=257;
_root.girls._y=60;
_root.girls._xscale=100;
_root.girls._yscale=85;

//если теме нужно задавать не в процентах а в пикселях то
_width //это ширина
_height //это высота

P.S. На локальной машине прелоадеру нечего делать , и он необязательн .

Punk T-34
25.05.2006, 02:03
Ну не работает! :(
this.createEmptyMovieClip("square", 0);
square._x = 180;
square._y = 150;
square._width = 175;
square._height = 175;
аналогично же и не работает!

если делаю так:
square._xscale = 175;
square._yscale = 175;, то картинки увеличиваются на 75%. Тоесть 175% от исходного.

если днлаю так:
square._xscale *= 0.25;
square._yscale *= 0.25;, то картинка в 4 раза меньше от исходной (самый приемлемый, на данный момент, вариант)

А, вообще, мне надо чтоб рисунок уменьшался до тех пор, пока его бОльшая сторона не будет равна 175px.

etc
25.05.2006, 12:05
Оператор % возвращает остаток от деления.
a = 200;
a %= 175; (a = a%175);
trace(a); // 25

А если у тебя ширина картинки a=200, высота b=100, то считаешь так:
a = 200;
b = 100;
max_ratio = Math.max(a,b)/175;
if (max_ratio>1) {
a /= max_ratio;
b /= max_ratio;
}
trace([a,b]);

Punk T-34
25.05.2006, 15:03
Это понятно, но если я не знаю, какого размера у меня картинки и, к тому же, они все разные по размеру...

etc
25.05.2006, 17:31
А кто тебе мешает узнать размеры картинки сразу после загрузки, а потом изменить их?

KUZEN
26.05.2006, 01:33
Модуль это Math.abs();, а что касается прелоадера, то ту то он как раз нужен, потому как если картинка будет большой, то код может выполниться быстрее её загрузки, хотя на глаз это может быть незаметным, а так как нужно менять размеры после загрузки получится полная фигня ...