Просмотр полной версии : Галерея в отдельных роликах, масштабирование, передача данных.
Всем привет,
Подскажите как осуществить такую задумку. Нужно чтобы на странице сайта боковое меню с превьюшками галереи всегда было прижато к правому краю и не масштабировалось(!) а картинка загружаемая при нажатии на превьюшку центрировалась и изменяла размер в зависимости от экрана браузера. Примерно как тут Пример (http://www.iaincrawford.com/#/BEAUTY/beauty%20/1)
Нужно ли мне делать два отдельных ролика или как то можно запрограммировать все в одном?
Если два отдельных то как осуществить передачу данных из одного ролика в другой (ну например чтоб при нажатие на превьюшку в первом ролике, основная картинка открывалась во втором).
Просто галерея уже сделана, но все в одном ролике и масштабируется естественно по экрану все сразу и боковые менюшки и основная картинка. Помогите пожалуйста. Заранее спасибо.
Ищите на форуме рецепт "резинового ролика"
Ищите на форуме рецепт "резинового ролика"
Спасибо большое сроду бы не догадался искать по данному запросу. Получилось у меня следущее
// Настройка сцены
Stage.scaleMode = "noScale";
Stage.align = "TL";
// создадим объект для реагирования на изменение габаритов окна
var resize_obj = {};
// Задаем начальные ширину и высоту окна
resize_obj.normal_width = 400;
resize_obj.normal_height = 300;
// список объектов, которые будем перемещать
resize_obj.position = [center_block, // центральный блок
block2 // блок справа
];
// реакция на изменения габаритов окна
resize_obj.onResize = function(){
//Центрирование центрального блока )))
center_block._x=Stage.width/2;
center_block._y=Stage.height/2;
//Масштабирование центрального блока (!!!)
center_block.width=Stage.width;
center_block.height=Stage.height;
//Смещение блока справа + прижатие его к правой стенке
block2._x=Stage.width-66.7;
};
// связь между классом Stage и объектом resize_obj
Stage.addListener(resize_obj);
Теперь бьюсь скорее над математической задачей как заставить центральный блок масштабироваться под окно ролика, но при этом сохранять свои пропорции.
Так естественно не получается...
center_block.width=Stage.width;
center_block.height=Stage.height;
Нужно как то по хитрому прописать формулу, помогите плиз.
Ресайз для произвольного мувика.
function resizeClip(mc:MovieClip, maxWidth:Number, maxHeight:Number)
{
var ratio_x = maxWidth / mc._width;
var ratio_y = maxHeight / mc._height;
if (ratio_x <= ratio_y)
{
if (ratio_x < 1)
{
mc._width = maxWidth;
mc._yscale = mc._xscale;
}
}
else
{
if (ratio_y < 1)
{
mc._height = maxHeight;
mc._xscale = mc._yscale;
}
}
//центрирование (если начало координат в контейнере находится по центру)
mc._x = -1 * Math.round(mc._width/2);
mc._y = -1 * Math.round(mc._height/2);
}
Что то не так, код не работает, наверное где то ошибочка.
Может еще нужно прописать для
ratio_y > 1 и ratio_x > 1
А сейчас картинка просто сжимается (((
var scalefactor = SIZE/pix._width*100
pix._xscale = pix._yscale = scalefactor
где SIZE - тот размер, под который подгоняем.
var scalefactor = SIZE/pix._width*100
pix._xscale = pix._yscale = scalefactor
где SIZE - тот размер, под который подгоняем.
Смотрите, получается если мне нужно подогнать ролик не только по ширине Stage, но и по высоте, т.е. чтобы он реагировал на изменение как ширины окна, так и высоты окна. Мне нужно прописать два условия?
if (Stage.width<Stage.height){
var scalefactor = Stage.width/pix._width*100
}
else {
var scalefactor = Stage.height/pix._height*100
}
pix._xscale = pix._yscale = scalefactor
Но чтото не выходит у меня "каменный цветок" (((
Ну да. Все верно. Не пойму что тут может не выходить.
Размер картинки вы берет ПОСЛЕ того как она загружена через MCL ? Или до?
Или вообще у вас loadMovie? :)
Да дергается почему то ролик, вот исходник
у меня даже в подписи указан формат флэша, который я могу прочесть :)
у меня даже в подписи указан формат флэша, который я могу прочесть :)
)))
Вот весь код
// Настройка сцены
Stage.scaleMode = "noScale";
Stage.align = "TL";
// создадим объект для реагирования на изменение габаритов окна
var resize_obj = {};
// Задаем начальные ширину и высоту окна
resize_obj.normal_width = 400;
resize_obj.normal_height = 300;
// список объектов, которые будем перемещать
resize_obj.position = [block2 ]; // блок справа
// реакция на изменения габаритов окна
resize_obj.onResize = function(){
//Масштабирование центрального блока (ВОТ ОН МНЕ И НУЖЕН)
if (Stage.width<Stage.height){
scalefactor = (Stage.width/pic._width)*100;
}
else {
scalefactor = (Stage.height/pic._height)*100;
}
pic._xscale = scalefactor;
pic._yscale = scalefactor;
//Центрирование центрального блока )))
pic._x=Stage.width/2;
pic._y=Stage.height/2;
//Смещение блока справа + прижатие его к правой стенке
block2._x=Stage.width-66.7;
};
// связь между классом Stage и объектом resize_obj
Stage.addListener(resize_obj);
Так вот мой центральный блок както странно дергается при масштабировании иногда задваивается визуально а иногда ваще не масштабируется (((
Добавлено через 4 часа 18 минут
Вот так нормально работает
//Функция изменения размера картинки
function picResize()
{
if (Stage.width<Stage.height){
pic._width = Stage.width;
pic._yscale = pic._xscale;
}
else {
pic._height = Stage.height;
pic._xscale = pic._yscale;
}
//Центрируем картинку
pic._x=Stage.width/2;
pic._y=Stage.height/2;
}
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.