Просмотр полной версии : Резиновость!
По рецепту (http://noregret.org/tutor/elastic/) я сделал себе ролик, который занимает 100% ширины и высоты html-страницы, то есть всю страницу. Но резиновость начинает себя проявлять только после изменения размеров окна (нужно хотя бы раз изменить размер окна, а если его ни разу не менять - то он не резиновый). Как я понял - это происходит из-за метода onResize. Я менял его на различные варианты. Например, если сделать onEnterFrame, то ролик жутко тормозит!!! - или его надо где-то удалить (delete onEnterFrame - тогда (я сразу после удалял) ничего не работает, или такой метод не подходит, т.к. все жутко тормозит! Еще я пробовал onLoad, но тут не понятно, если что загрузилось??? Пробовал _root.onload - результата никакого - резиновость пропадала. Не знаю что делать.
Подскажите, как сделать, чтобы ролик занимал всю страницу сразу?
(кстати, все что надо находится во 2-м фрэйме сцены, в первом - прелоадер, который кстати, по тому же алгоритму резиновый (по позиционированию) всегда, а вот 2-ой кадр сцены только при изменении размеров окна становится резиновым. ) В чем же тут дело?
Кто переместил тему - подсказал бы хоть... :(
Просто же, раз в раздел для начинающих!
А выполнить onResize сразу после задания оной не пробовал?
SINtez_v
16.05.2006, 23:51
Проще всего выставлять данный параметр при публикации.
SINtez_v
17.05.2006, 00:42
Может я неправильно понел топик.
Dimensions проценты 100-100
Scale - Exact fit
я переместил топик
Раздел ActionScript и Общий исключительно для людей прочитавших хелп =)
2 __etc:
> А выполнить onResize сразу после задания оной не пробовал?
Как это сделать?
2 SINtez_v:
> Может я неправильно понел топик.
> Dimensions проценты 100-100
> Scale - Exact fit
Можешь пояснить о чем речь?
SINtez_v
17.05.2006, 02:10
это параметры публикации т.е сохранение swf в HTML
При этих параметрах ролик будет растянут на 100% во весь экран и будет уменьшатся или увеличиваться пропарционально окну.
Не, так не пойдет! У меня не все элементы изменяют размеры...
(внимательно прочитай пост).
Вот __etc писал:
> А выполнить onResize сразу после задания оной не пробовал?
Как это сделать, не изменяя размера окна? .onResize = true;
Что-то типа такого?
SINtez_v
17.05.2006, 02:22
Поиск юзал ?
http://flasher.ru/forum/showthread.php?t=78068&highlight=onResize
И в хелпе про onresize класно всё написано.
Stage.onResize Вызывается, когда Stage.scaleMode имеет значение "noScale" и ролик маштабируется.
Stage.onResize = "noScale" - это я прописал!
Но надо чтобы не только когда ролик масштабируется, а всегда вызывался. точнее сначала бы вызвался, а потом при масштабировании...
То есть прописано:
Stage.scaleMode = "noScale"
0xFFFFFF
17.05.2006, 05:01
Stage.onResize Вызывается, когда Stage.scaleMode имеет значение "noScale" и ролик маштабируется.
Stage.onResize = "noScale" - это я прописал!
Но надо чтобы не только когда ролик масштабируется, а всегда вызывался. точнее сначала бы вызвался, а потом при масштабировании...
чтобы вызывался в начале мы делаем подписчика на метот onResize а потом сразу вызываем этот метод onResize();
в первом кадре
Stage.align = "noScale"
var onResizeObj = new Object();
onResizeObj.onResize = function () {
// выполняется при изменении размеров
}
//
Stage.addListener(onResizeObj);
onResizeObj.onResize();
У меня прелоадер (только прелоадер) в первом карде, а ВСЕ остальные объекты, которые должны растягиваться и масштабироваться во 2-м кадре. Так вот если я в обоих кадрах делаю одинаковый код для растягивания, если меняю название объекта (в пером кадре onResizeObj, во втором onResizeObject), если ставлю код только во 2-ой кадр (чтобы прелоадер не позиционировался, зато все остальное позиционировалось!!!) - эффекта никакого! :( только прелоадер, когда находится в первом кадре для него код позиционируется, а во втором кадре начинает позиционироваться ВСЕГДА только после первого изменения габаритов окна! Что же делать?
P.S. Причем только в первый кадр код я поместить не могу, т.к. все объекты находятся во втором!
Подскажите пожалуйста.
Так напиши во втором, ё-моё...
Я же говорил, что даже если пишу только во втором - эффекта нет!
Пока не изменю габариты окна - позиционирования нет. А в первом прелоадер почему-то позиционируется! Во втором кадре - чтобы я не делал - начинает все позиционироваться только после изменения габаритов окна.
Первый кадр с прелоадером:
// настройки сцены
Stage.scaleMode = "noScale";
Stage.align = "TL";
// создадим объект для реагирования на изменение габаритов окна
var resize_obj = {};
// запомнили нормальную ширину
resize_obj.normal_width = 1020;
// запомнили нормальную высоту
resize_obj.normal_height = 587;
// самое главное: список объектов, которые будем перемещать
resize_obj.position = [preloader];
// собственно, реакция на изменения габаритов окна
resize_obj.onResize = function()
{
var clip;
for (var i in this.position) {
// перебираем все клипы в списке
clip = this.position[i];
// восстанавливаем пропорции координат для каждого клипа
clip._x = Stage.width*clip._xRatio;
clip._y = Stage.height*clip._yRatio;
// если для клипа определена пропорция по ширине
if (clip._widthRatio != undefined) {
clip._width = Stage.width*clip._widthRatio;
}
// если для клипа определена пропорция по высоте
if (clip._heightRatio != undefined) {
clip._height = Stage.height*clip._heightRatio;
}
}
};
// связь между классом Stage и объектом resize_obj
Stage.addListener(resize_obj);
/* запоминаем пропорции координат
(отношение координат к нормальной ширине/высоте) */
var clip;
for (var i in resize_obj.position) {
// перебираем все клипы в списке
clip = resize_obj.position[i];
// пропорция координаты по горизонтали
clip._xRatio = clip._x/resize_obj.normal_width;
// пропорция координаты по вертикали
clip._yRatio = clip._y/resize_obj.normal_height;
}
Второй кадр со всеми объектами:
// создадим объект для реагирования на изменение габаритов окна
var resize_object = {};
// запомнили нормальную ширину
resize_object.normal_width = 1020;
// запомнили нормальную высоту
resize_object.normal_height = 587;
// самое главное: список объектов, которые будем перемещать
resize_object.position = [equ,
mcF,
Logo,
mcMenu,
mcM,
mcLogo
mcFil
mcLi
mcAdd
tpers,
mcFo
mcCu
razrab,
mcR
];
// собственно, реакция на изменения габаритов окна
resize_object.onResize = function()
{
var clip;
for (var i in this.position) {
// перебираем все клипы в списке
clip = this.position[i];
// восстанавливаем пропорции координат для каждого клипа
clip._x = Stage.width*clip._xRatio;
clip._y = Stage.height*clip._yRatio;
// если для клипа определена пропорция по ширине
if (clip._widthRatio != undefined) {
clip._width = Stage.width*clip._widthRatio;
}
// если для клипа определена пропорция по высоте
if (clip._heightRatio != undefined) {
clip._height = Stage.height*clip._heightRatio;
}
// для "обычного" ролика: пропорционально
if (Stage.width/Stage.height<resize_object.normal_width/resize_object.normal_height) {
mcR._width = Stage.width*mcR._widthRatio;
mcR._yscale = mcR._xscale;
mcF._width = Stage.width*mcF._widthRatio;
mcF._yscale = mcF._xscale;
mcM._width = Stage.width*mcM._widthRatio;
mcM._yscale = mcM._xscale; }
else {
mcR._height = Stage.height*mcR._heightRatio;
mcR._xscale = mcR._yscale;
mcF._height = Stage.height*mcF._heightRatio;
mcF._xscale = mcF._yscale;
mcM._height = Stage.height*mcM._heightRatio;
mcM._xscale = mcM._yscale;
}
}
};
// связь между классом Stage и объектом resize_object
Stage.addListener(resize_object);
/* запоминаем пропорции координат
(отношение координат к нормальной ширине/высоте) */
var clip;
for (var i in resize_object.position) {
// перебираем все клипы в списке
clip = resize_object.position[i];
// пропорция координаты по горизонтали
clip._xRatio = clip._x/resize_object.normal_width;
// пропорция координаты по вертикали
clip._yRatio = clip._y/resize_object.normal_height;
}
/* запоминаем пропорции высоты и ширины
(отношение габарита к нормальной ширине/высоте) */
mcR._widthRatio = mcR._width/resize_object.normal_width;
mcR._heightRatio = mcR._height/resize_object.normal_height;
mcF._widthRatio = mcF._width/resize_object.normal_width;
mcF._heightRatio = mcF._height/resize_object.normal_height;
mcM._widthRatio = mcM._width/resize_object.normal_width;
mcM._heightRatio = mcM._height/resize_object.normal_height;
В первом кадре прелоадер позиционируется, а во втором ниче не позиционируется, пока не изменишь габарит окна. Причем, естественно все объекты, указанные в коде во втором кадре появляются только во втором кадре (иначе зачем тогда прелоадер?..)
Добавь в первом и во втором кадре в конце:
resize_object.onResize();
Именно тебе об этом пытаются сказать всю тему.
Да ужжж... Надо больше спать... А я почему-то в середину вставляю...
Спасибо!
2 __etc:
Можешь счетчик мне скинуть такой как у тебя на сайте, хотя бы чтобы просто общее количество посетителей считал.
В поиске нашел лажу только какую-то не работающую...
Можешь счетчик мне скинуть такой как у тебя на сайте, хотя бы чтобы просто общее количество посетителей считал.
В поиске нашел лажу только какую-то не работающую...
мухахахгагаахагмубугагага
2 Nirth:
ПРОВЕРЬ САМ!!! Все что есть при поиске по запросу счетчик -
1. НЕ РАБОТАЕТ!
2. Ссылается на несуществующие или перемещеные страницы! Это и на Flasher'е и на сайта WB...
http://www.flasher.ru/forum/search.php?searchid=322356 - сам смотри, если найдешь работающий счетчик (я 5 штук скачивал и тестил на своем серваке - всегда либо 1, либо 0. А тестил я и просил еще по асе одного человека из Москвы.) - получишь награду "Человек, который нашел ВСЕ!"
тема закрыта.
Пользователь Olejan получает бан на месяц за излишнее использование капс лока, и воскл знаков.
ну нету тут счетчика нормального, работающего.
Могу дать файл на php - кто его встроит во флэш?
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.