|
|
|||||
Регистрация: Aug 2010
Сообщений: 29
|
Резина + пропорции
Создавал флешку тянущуюся по ширине страницы
использовал метод "резиновый ролик" но столкнулся с трудностями: Мне нужно чтобы при растяжении объект внутри ролика растягивался одновременно и в ширину и в высоту при этом сохранял свои пропорции при этом в высоту он просто будет уходить под слой (внизу) из за чего появится скрол (но не в этом суть) суть в том что даже использование _xscale и _yscale не помогло подскажите если ктото сталкивался или если есть варианты решения |
|
|||||
Регистрация: Oct 2009
Сообщений: 101
|
невозможно организовать одновременно резиновый ролик и сохранение пропорций - эти условия противоречат друг-другу. Представьте что ваш ролик превратят в узкую горизонтальную или вертикальную полоску и скажите, как должны вести себя элементы ролика - должны сохранить пропорции и остаться компактной кучкой посередине ролика, разползтись по краям ролика с сохранением пропорций или не сохраняя пропорций занять максимально-возможное пространство (заполнить собой всю узкую полосу)
|
|
|||||
Регистрация: Feb 2008
Сообщений: 560
|
Скорее всего что-то не так сделали. Для детальной подсказки мало данных.
|
|
|||||
Регистрация: Nov 2008
Сообщений: 528
|
fessor, автор говорит, что его устраивает вертикальный скролл (а контент пусть исчезнет за нижней границей флешки).
wcbfalcon, тогда сделайте всё то же, что в обычном резиновом ролике - но приравнивайте только ширину ролика к ширине сцены, а высоту ролика высчитывайте пропорционально его ширине. |
|
|||||
Регистрация: Aug 2010
Сообщений: 29
|
оперировать функциями _yscale не выходит
объясню причину: есть 3 блока (b1, b11, b2), блок b11 находится внутри блока b1 при растяжении обрабатывается ширина блока b1 а соответственно растягиваются (в ширину) все объекты внутри этого блока при этом _yscale и _xscale у них остается 100% (так как меняется %-е соотношение только родительного блока) тут то и получается загвоздка Stage.scaleMode = "noScale"; Stage.align = "TL"; var resize_obj = {}; resize_obj.normal_width = 500; resize_obj.normal_height = 300; resize_obj.position = [ bl01, bl01.bl01_1, bl02 ]; 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.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; } bl01._widthRatio = bl01._width/resize_obj.normal_width; resize_obj.onResize(); пока писал сообщение ковырялся в коде и наткнулся на мысль которая помогла отчасти решить изначально поставленную задачу ... resize_obj.onResize = function(){ bl01.bl01_1._yscale = bl01._xscale; 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; } } }; ... Но появилась новая задача исходя из этого как заставить другие блоки (внутри первого) сохранять свой масштаб даже при растяжении (тоесть если был квадрат 100х100 то и после растяжении он должен выглядеть как 100х100. Если у кого есть совет по этому поводу заранее буду благодарен (если успею сам решить проблему отпишусь о результате) |
|
|||||
Регистрация: Aug 2010
Сообщений: 29
|
Решением оказалось вот:
в самом начале добавляем переменный содержащие масштаб нужного блока (в часности я записывал только ширину так как по высоте не растягиваю) после чего в обработку функции resize_obj.onResize = function(){ вписал такое выражение: Тоесть вычисляя на сколько маштаб первого блока после растяжения изменился относительно его реального размера я уменьшаю блок находящийся внутри первого на эту разницу тем самым получаю при любом растяжении внутренний блок с маштабом 100% Вполне возможно что я сделал это не совсем грамотно и при большом количестве блоков запись будет грамосткой. Если кто переделает ее в более коректную скажу спасибо Внизу приложен исходник примера если когото заинтересовал |
|
|||||
Регистрация: Nov 2008
Сообщений: 528
|
Цитата:
|
|
|||||
Регистрация: Aug 2010
Сообщений: 29
|
сразу не бросилось в глаза только заметил косяк
когда загружаем флешку уже в ХТМЛе (к примеру на всю ширину экрана) то растяжение по ширене срабатывает а вот по высоте позиционирование происходит только если сдвинуть окно браузера хотябы на 1пх посоветуйте как заставить высоту срабатывать одновременно с шириной при загрузке |
Часовой пояс GMT +4, время: 22:06. |
|
« Предыдущая тема | Следующая тема » |
|
|