PDA

Просмотр полной версии : Прилипание клипа к краю окна


Archi_xxx
09.06.2010, 19:35
Приветствую.
мне нужно сделать прилипание градиента к краю окна, то есть к нижней границе, чтобы градиент не зависимо от разрешения экрана\размера окна ВСЕГДА был внизу, можно ли это организовать средствами только AS ?

djken
09.06.2010, 19:47
Конечно можно.
Например ваш градиент запихиваете в мувик под названием gradient, а на первом кадре вешаем код:
Stage.align="TL";
Stage.scaleMode="noScale";

funcResize=function(){
gradient._y=Stage.height-gradient._height;
}
var myListener:Object = new Object();
myListener.onResize = function() {
funcResize();
};
Stage.addListener(myListener);
funcResize();

Archi_xxx
09.06.2010, 20:14
спасибо, разбираюсь.

кпримеру хочу щас прилипнуть к левому краю, но дело в том что сама флешка уже отцентрована
Stage.scaleMode = "noScale";
Stage.align = "T";

посему новый Stage.align влияет на саму флешку, мне нужно выравнивание только для мувика, не подскажете?

djken
10.06.2010, 00:12
Например изначальные размеры вашего компилируемого SWF файла 550x400 и нужно чтобы gradient по оси X всегда был слева - у границы окна при Stage.align = "T":
Stage.scaleMode = "noScale";
Stage.align = "T";

funcResize=function(){
gradient._x=0-(Stage.width-550)/2;
}
var myListener:Object = new Object();
myListener.onResize = function() {
funcResize();
};
Stage.addListener(myListener);
funcResize();

Ну это не удобно когда Stage.align = "T", так как при изменении размеров окна плеера начало координат меняет свое положение.
Если вам нужно центровать флэшку, то легче просто внутри все объекты центровать с помощью _x и _y, при Stage.align="TL";

Archi_xxx
10.06.2010, 01:13
Спасибо огромное, все работает!
для нижней границы окна у меня получилось так (при Stage.align = "T")


funcResize=function(){
gradient._y=980-(Stage.height-1000)/-1; //работает правильно именно с -1 , не могу понять почему
}
var myListener:Object = new Object();
myListener.onResize = function() {
funcResize();
};
Stage.addListener(myListener);
funcResize();

djken
10.06.2010, 13:52
Сами себя путаете такой формулой )) Все проще...
Stage.align = "T" означает, что начало координат всего вашего SWF по оси Y будет всегда совпадать с верхней границей окна флэшплеера - не зависимо от его размеров.
Следовательно, чтобы gradient, например, лежал всегда на нижней границе достаточно написать:
gradient._y=Stage.height-gradient._height;

вот и все =)
Если нужно чтобы gradient, например, высовывался из нижней границы на 20px, то пишем:
gradient._y=Stage.height-20;