Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   отцентровка изображения (opera) (http://www.flasher.ru/forum/showthread.php?t=106076)

el-lammo 02.01.2008 01:47

отцентровка изображения (opera)
 
в одном единственном кадре стоит

Код:

mc.maxWidth = 420; // задает рамку 420 на 420
mc.maxHeight = 420;

// в эту область грузится картинка

mc.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();}
};
};

// выравнивает загружаемую картинку по центру
mc.resize = function(){
this.image._x = Math.round((this.maxWidth-this.image._width)/2);
this.image._y = Math.round((this.maxHeight-this.image._height)/2);
};
_root.mc.loadImage("img/medium/obj1-001.jpg");


и куча кнопок на каждой стоит

Код:

on(press){
tellTarget(_root.mc.loadImage("img/medium/obj1-002.jpg")){}}

в ie все работает прекрасно

в опере имеется вот такой глюк

если нажать на одну из кнопок, и пока картинка не загрузилась до конца, нажать любую другую
то врезультате загрузившаяся последняя картинка смещается вниз и вправо за пределы допустимой области
ощущение что в какой-то момент в _root.mc.image помещаются сразу две картинки и this.image._width принимается длина обеих сразу
или еще что-то не понимаю вобщем

а указывать к каждой картинке конкретно _x и _y очень затруднительно

может у кого есть мысли по этому поводу?

DarkLight 02.01.2008 02:34

1. Оформите код в своем сообщении, используя теги [code][/code]
2. Не используйте on() и tellTarget, они считаются устарешими начинаяс 2000 года
3. Используйте MovieClipLoader и обработчик onLoadInit. Дело в том, что между окончанием загрузки и инициализацией значений ширины и высоты проходит некоторое время, а до этого они равны 0. в разных вариантах плеера (activeX, plugin, standalone) оно немного разное. У Вас как раз и возникает из-за этого проблема. Масштабирование в коде при вызове onLoadInit позволит ее избежать

el-lammo 02.01.2008 02:38

Вложений: 2
вернее глюк вот в чем

видимо браузер не успевает отследить длину и ширину загружаемой картинки и принимает их за 0
поэтому изображение центрируется не там где надо

вот картинки того что получается

можно-ли применить resize() только в тот момент когда уже известны длина и ширина подгружаемой картинки?

MrPoma 02.01.2008 02:54

юзайте trace() и найдете ошибку

DarkLight 02.01.2008 03:01

Цитата:

Сообщение от el-lammo
видимо браузер не успевает отследить длину и ширину загружаемой картинки и принимает их за 0

Нет, это Вы слишком рано требуете плеер дать эту информацию.

P. S. У меня в практике бывали странные случаи, когда в onLoadInit ширина и высота все равно равны 0, тогда помогают вещи типа присваивания масштаба 100% по горизонтали и вертикали(_xscale,_yscale), после этого ширина и высота должны быть нормальными.

etc 02.01.2008 11:20

el-lammo получает плюс за проигнорированное замечание модератора.

valyard.com 02.01.2008 13:30

Цитата:

Сообщение от __etc
el-lammo получает плюс за проигнорированное замечание модератора.

повеселил
P.S. я, наверно, получу плюс за смех над модератором?

iNils 02.01.2008 13:34

Нет, за флуд.

etc 02.01.2008 14:08

valyard, вы такой белый и пушистый в ruFlash, а к данному форуму у вас явно предвзятое отношение. Здесь не лохи сидят, как вам могло показаться.
Оставьте свою предвзятость при себе, когда вновь придете сюда.

el-lammo 02.01.2008 19:56

Цитата:

Сообщение от DarkLight
1. Оформите код в своем сообщении, используя теги [code][/code]

думал это относится к последующим сообщениям
не знал что можно изменить уже написанное

если администраторы так трепетно относятся к соблюдению норм
то просто удалите последние 5 сооющений


Часовой пояс GMT +4, время: 10:18.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.