Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   внешний mc allowscale, внутренний mc noscale (http://www.flasher.ru/forum/showthread.php?t=112638)

solo19770701 03.06.2008 22:01

внешний mc allowscale, внутренний mc noscale
 
всем доброго времени суток. Вопрос. Хочу сделать частично "резиновый ролик". Суть: сама флешка может маштабироваться в зависимости от размера окна, но часть внутреннеего содержимого остается жестко привязаное к определенному размеру. Понимаю что размер флешки можно котролировать через
Код:

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

Вложений: 1
Вот примерчик

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

Вложений: 1
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

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

Fernando Costa 12.06.2008 19:26

как я понял стремитесь вы к дефолтному скейлу???

solo19770701 12.06.2008 19:44

Вложений: 1
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:


Часовой пояс GMT +4, время: 21:32.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.