serdeles
12.05.2010, 17:30
UPDATE: http://www.flasher.ru/forum/showpost.php?p=908202&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();
Есть проблема: не могу выровнять объекты 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();