![]() |
|
||||||||||
|
|||||
|
[+4 24.05.10]
Регистрация: May 2003
Адрес: Москва
Сообщений: 186
|
UPDATE: http://www.flasher.ru/forum/showpost...02&postcount=6 (исходники в формате Flash CS3).
Есть проблема: не могу выровнять объекты circle (1 — 5) по верхней границе объекта square. В размере по-умолчанию всё позиционируется как надо. Однако, когда размер окна изменяется, объекты съезжают выше или ниже square. Так же не могу понять, каким образом выдержать расстояние между объектами circle и rec одинаковым. Оно тоже съезжает, если изменить размер окна. Большая просьба подсказать, в какую сторону копать. Исходник и код прикладываю. Всем известный код: /* (c) by Nox Noctis for noregret.org and flash-mx.ru feel@noregret.org sample 3 for tutorial: http://noregret.org/tutor/elastic/ */ // настройки сцены Stage.scaleMode = "noScale"; Stage.align = "TL"; // создадим объект для реагирования на изменение габаритов окна var resize_obj = {}; // запомнили нормальную ширину resize_obj.normal_width = 900; // запомнили нормальную высоту resize_obj.normal_height = 675; // самое главное: список объектов, которые будем перемещать resize_obj.position = [square, circle, circle2, circle3, circle4, circle5, rec1, rec2, rec3, rec4, rec5, ]; // собственно, реакция на изменения габаритов окна resize_obj.onResize = function() { _root.TF1.text = "текущие габариты ролика: "; _root.TF1.text += Stage.width+"x"; _root.TF1.text += Stage.height; 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; } /* запоминаем пропорции высоты и ширины (отношение габарита к нормальной ширине/высоте) */ square._Ratio = square.noScale; circle._Ratio = circle.noScale; circle2._Ratio = circle2.noScale; circle3._Ratio = circle3.noScale; circle4._Ratio = circle4.noScale; circle5._Ratio = circle5.noScale; rec1._Ratio = rec1.noScale; rec2._Ratio = rec2.noScale; rec3._Ratio = rec3.noScale; rec4._Ratio = rec4.noScale; rec5._Ratio = rec5.noScale; resize_obj.onResize();
__________________
Достал уж всех своими глупыми вопросами... Последний раз редактировалось serdeles; 14.05.2010 в 16:14. |
|
|||||
|
[+4 06.05.14]
|
Да взять все да переписать самому заново. Это несложно. Кстати реализация сдесь не очень. Например это :
square._Ratio = square.noScale; circle._Ratio = circle.noScale; circle2._Ratio = circle2.noScale; circle3._Ratio = circle3.noScale; circle4._Ratio = circle4.noScale; circle5._Ratio = circle5.noScale; rec1._Ratio = rec1.noScale; rec2._Ratio = rec2.noScale; rec3._Ratio = rec3.noScale; rec4._Ratio = rec4.noScale; rec5._Ratio = rec5.noScale; |
|
|||||
|
[+4 24.05.10]
Регистрация: May 2003
Адрес: Москва
Сообщений: 186
|
Да, синтаксис в моём коде отсойный, согласен.
Однако, вопрос был немного о другом — о том, как позиционировать объекты относительно друг друга.
__________________
Достал уж всех своими глупыми вопросами... |
|
|||||
|
[+4 24.05.10]
Регистрация: May 2003
Адрес: Москва
Сообщений: 186
|
Попробуем задать вопрос по-другому.
Наткнулся на более-менее подходящий пример по позиционированию: http://www.flasher.ru/forum/showthre...E2%E0%ED%E8%E5. В предпоследнем каменте — работающий пример. Но поскольку с программированием у меня туго, все равно требуется помощь опытных флешеров. Я хотел бы скрестить мой код с кодом примера. Конкретнее: var len = array.length; for (var i = 0; i<len; i++) { var tf = _root["tf"+i]; onResize = function () { n1._x += Stage.width+"x"; n1._y = Stage.height-footer._height; n2._x += Stage.width+"x"; n2._y = Stage.height-footer._height; n3._x += Stage.width+"x"; n3._y = Stage.height-footer._height; footer._x = (Stage.width-footer._width)/2; footer._y = Stage.height-footer._height; }; } // Stage.scaleMode = "noScale"; Stage.align = "TL"; Stage.addListener(this); onResize = function () { n1._x += Stage.width+"x"; n1._y = Stage.height-footer._height; n2._x += Stage.width+"x"; n2._y = Stage.height-footer._height; n3._x += Stage.width+"x"; n3._y = Stage.height-footer._height; footer._x = (Stage.width-footer._width)/2; footer._y = Stage.height-footer._height; }; Однако, теперь возникает проблема с резиновостью по горизонтали. Мне надо привязать к footer все три элемента, причём, таким образом, чтобы они располагались на равном друг от друга расстоянии по горизонтали. Другими словами, нужно, чтобы при изменении размера экрана, расстояние между элементами (n1, n2 и n3) «гуляло», примерно как это происходит в примере, приаттаченном к топику (index.fla.zip). Поможете?
__________________
Достал уж всех своими глупыми вопросами... Последний раз редактировалось serdeles; 14.05.2010 в 16:22. |
|
|||||
|
Регистрация: Sep 2005
Сообщений: 950
|
вам могут помочь но при одном условии что вы выложите исходник как минимум в CS3.
|
|
|||||
|
[+4 24.05.10]
Регистрация: May 2003
Адрес: Москва
Сообщений: 186
|
Опс. На этот раз выкладываю оба исходника в CS3. Надеюсь, поможет.
__________________
Достал уж всех своими глупыми вопросами... |
|
|||||
|
Регистрация: Sep 2005
Сообщений: 950
|
если ширина элементов одинаковая то можно вот так
Stage.scaleMode = "noScale"; Stage.align = "TL"; Stage.addListener(this); onResize = muResize function muResize() { var _w:Number = (Stage.width - n1._width*3)/4 for(var i:Number=1;i<4;i++){ var n:MovieClip = this["n"+i]; n._y = footer._y; n._x = _w*i+(i-1)*n._width; } footer._x = (Stage.width - footer._width) / 2; footer._y = Stage.height - footer._height; }; |
|
|||||
|
[+4 24.05.10]
Регистрация: May 2003
Адрес: Москва
Сообщений: 186
|
Спасибо всем за ответы. Посидев и попотев над кодом, решил задачу сам. Наверно, не самый изящный скрипт, но работает, отвечая поставленной задаче: привязать объекты к верхней части определенного мувика, и выровнять вертикальный отступ между третьей группой объктов. При этом обеспечив резину. Код и исходник прикладываю — возможно, пригодится кому-нибудь в будущем, ибо мои поиски по форуму, связанные с позиционированием объектов на резине, зашли в тупик.
Stage.scaleMode = "noScale"; Stage.align = "TL"; var resize_obj = {}; resize_obj.normal_width = 900; resize_obj.normal_height = 675; resize_obj.position = [square, circle, circle2, circle3, circle4, circle5, rec1, rec2, rec3, rec4, rec5, bot, logo ]; resize_obj.onResize = function() { var clip; for (var i in this.position) { clip = this.position[i]; clip._x = Stage.width*clip._xRatio; square._x = (Stage.width-square._width)/2; clip._y = Stage.height*clip._yRatio; square._y = Stage.height-square._height; circle._y = Stage.height-square._height; circle2._y = Stage.height-square._height; circle3._y = Stage.height-square._height; circle4._y = Stage.height-square._height; circle5._y = Stage.height-square._height; rec1._y = Stage.height-circle._height/0.75; rec2._y = Stage.height-circle._height/0.75; rec3._y = Stage.height-circle._height/0.75; rec4._y = Stage.height-circle._height/0.75; rec5._y = Stage.height-circle._height/0.75; 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; square._y = Stage.height-square._height; }
__________________
Достал уж всех своими глупыми вопросами... |
![]() |
![]() |
Часовой пояс GMT +4, время: 16:39. |
|
|
« Предыдущая тема | Следующая тема » |
|
|