PDA

Просмотр полной версии : внешний mc allowscale, внутренний mc noscale


solo19770701
03.06.2008, 22:01
всем доброго времени суток. Вопрос. Хочу сделать частично "резиновый ролик". Суть: сама флешка может маштабироваться в зависимости от размера окна, но часть внутреннеего содержимого остается жестко привязаное к определенному размеру. Понимаю что размер флешки можно котролировать через
fscommand("allowscale" , true); or false
но это контролирует весь ролик, а мне нужно что бы я мог решать какие mc разрешить scale а какие жестко привязать к размерам в обьемах одной сцены.:wacko:

iNils
03.06.2008, 23:44
только ручками.
http://noregret.org/tutor/elastic/

solo19770701
03.06.2008, 23:50
to iNils: спасибо. Пошел учить матчасть. :victory:

solo19770701
11.06.2008, 19:39
to iNils: спасибо за линк. Посмотрел, почитал. И у меня возник другой вопрос. В примере маштабирование идет относительно сцены. А каким путем можно сделать маштабирование пропорциональным? К примеру в указаном уроке круг имеет такую привязку к сцене

circle._widthRatio = circle._width/resize_obj.normal_width;
circle._heightRatio = circle._height/resize_obj.normal_height;
что привязывает его к размерам сцены. Но у меня другая цель, сделать маштабирование круга пропорциональным в независимости от непропорционального маштабирования сцены, т.е ширина и высота круга привязаны только к одному параметру сцены (на выбор ширина или высота). Матемтически это выглядит так "newCircleHeight=(newCircleWidth/oldCircleWidth) * oldCircleHeight" Но как мат. формулу привязать к коду я незнаю. Есть какие нибудь идей. :confused:

Wolsh
11.06.2008, 20:43
Вот примерчик

solo19770701
11.06.2008, 20:55
to Wolsh. Оно, ей богу оно. СПАСИБО. Пошел ковырятся.

solo19770701
11.06.2008, 23:13
to Wolsh & iNils: это как говрится я опять. Посмотрел. Все хороше. Но возник другой вопрос, как все это выровнять по центру. В мануале написано только L, R, T, B & LT etc. вобщем никакого упоминания о центер. Вопрос каким образом можно заставить обьект изменять размер от центра а не от углов?
Вот здесь, можно видеть как на данный момент все выглядит.

this.attachMovie("my_clip", "my_clip", this.getNextHighestDepth(), {_x:60, _y:40});

Stage.scaleMode = "noScale";
Stage.align = "TL";

Stage.addListener(this);
var sw:Number = Stage.width;

this.onResize = function()
{
scale(my_clip, "w");
};

this.onResize();

function scale (mc:MovieClip, direct:String)
{
if(direct == "w")
{
mc._xscale = mc._yscale = 100*Stage.width/sw;
}
};
:rolleyes:

iNils
11.06.2008, 23:18
Stage.align = "";

solo19770701
11.06.2008, 23:26
to iNils: хай. Логически должно работать, я и сам этот метод пробовал. При увеличеннии клип уходит в правый нижний угол.

iNils
11.06.2008, 23:30
Тогда "C" или любой другой символ.

Wolsh
12.06.2008, 00:23
А я слегка не понял, чего Вы хотите получить. "Не от углов, а от центра" - чьи углы и центр? То есть, если флэшку растягиваем вправо, вся сцена должна оставаться в центре, смещаясь тоже вправо вслед за границей окна? Так это просто:
this.onResize = function()
{
_root._x += (Stage.width-sw)/2
scale(my_clip, "w");
};
Или чтото другое?

solo19770701
12.06.2008, 01:13
to iNils: нет с С непрокатывает и СС тоже.

to Wolsh: Именно это я и хотел сказать. Твоя последнияя идея хороша. НО, при растягивании клипа он как рокета улетает вправо, даже при малейшем растяжении клипа. Вот приатачил что получается.

solo19770701
12.06.2008, 01:53
to Wolsh: по поводу того, что ты написал в последнем посту. Может ты это имел ввиду:

this.onResize = function()
{
_root._x = (Stage.width-sw)/2
scale(my_clip, "w");
};
потому что когда ты задал += отсчет идет только на увеличение, а когда мувик сжимаешь, то назад ничего не идет. Да и это тоже неработает, вообщем эксперементирую дальше :wacko:

Wolsh
12.06.2008, 02:30
А, блин, плюсик лишний, да. Оппечатался.
Без него все четко, что значит "не работает"?
Закомментируйте изменение размеров клипика, и увидите, что все центрируется)))
Теперь можно сказать, что Вы на самом деле хотели? ))))

solo19770701
12.06.2008, 17:48
to Wolsh: ты прав. Если изменение размера закоментировать, то центрируется. Но если оба хранить, что и является моей целью, то все сдвигается вправо. Вот, простенькую картинку сделал для наглядности, ну и само собой файл приатачен постом выше. Буду дальше разбиратся. Одного не могу понять, почему даже после задания координат для х как переменной, фигура сползает вправо?

Fernando Costa
12.06.2008, 19:26
как я понял стремитесь вы к дефолтному скейлу???

solo19770701
12.06.2008, 19:44
to Fernando Costa: хай. Нет. К дефолтному скейлу я не стремлюсь. Вот сделал набросок, того к чему я стремлюсь. Стандартный скейл идет из Верхнего Левого угла. Похоже что флеш непотдерживает маштабирование из центра. Откуда угодно, но не из центра. Если зайти в манула к флешу там описано как можно цетрировать обьекты на сцене. От центра там нету. Что и можно проверить из прикрепленого мной файла несколькими постами выше. Функция

this.onResize = function()
{
_root._x = (Stage.width-sw)/2
scale(my_clip, "w");
};
в этом случае несрабатывает.:away:

Wolsh
12.06.2008, 20:35
А сразу нельзя было сказать, что Вам надо центрировать ОДИН КЛИП а не сцену?
this.onResize = function()
{
scale(my_clip, "w");
my_clip._x = (Stage.width-my_clip._width)/2
};

solo19770701
12.06.2008, 21:10
to Wolsh: хай. Заработало. Как говорится, все гениальное просто. Как же я сам недгодался. Спасибо. А по поводу обьяснения, так я стал картинки рисовать, что бы понятнее было. В следующий раз, если надо будет что то спростиь, сразу картинку прилеплю :rolleyes: