Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   код для ориентирования объектов по углам (http://www.flasher.ru/forum/showthread.php?t=184132)

pomuс 11.09.2012 23:07

код для ориентирования объектов по углам
 
Привет. Подскажите пожалуйста, как правильно прописать обекты к каждому углу странице в браузере?
вот есть основной код
Код AS3:

function init()
{
stage.align=StageAlign.TOP_LEFT;
stage.scaleMode=StageScaleMode.NO_SCALE;
 
stage.addEventListener(Event.RESIZE, updateSize);
stage.dispatchEvent(new Event(Event.RESIZE));
 
backgroundRectangle.x = 0;
backgroundRectangle.y = 0;
}

допустим object1.x = ????
y = ????
или надо через Align?

Zebestov 11.09.2012 23:30

stageWidth и stageHeight

pomuс 12.09.2012 16:12

правильно ли я понял, что если в HTML поправляем на % с пикселей, то и параметр stageWidth будет восприниматься в %?
то есть если есть объект obj_1
Код AS3:

obj_1.stageWidth = 100;
obj_1.stageHeight = 100;

то он окажется в правом нижнем углу? (если точка координат у муви клипа будет также справа внизу) ?

Tails 12.09.2012 16:31

pomuс,
stageWidth всегда измеряется в пикселах.

Zebestov 12.09.2012 16:42

Цитата:

Сообщение от pomuс (Сообщение 1095675)
если есть объект obj_1

...то у него нет свойства stageWidth. Есть же доки — прекрасное, надо сказать, пособие!

Вот пример того, как поставить в нижний правый угол объект, у которого точка привязки находится строго в левом верхнем углу (в противном случае нужно использовать несколько более сложное определение габаритов)
Код AS3:

oby_1.x = stage.stageWidth - obj_1.width; // прижали к правому краю
oby_1.y = stage.stageHeight - obj_1.height; // прижали к нижнему краю


pomuс 12.09.2012 18:30

ребята, спасибо за помощь , вы уже очень помогли. У меня остался 1 шаг. Вы уже наверняка поняли что 0 в флэше, у меня вообще другой профиль, но так уж сложилось что надо завершить. Обязательно возьмусь за изучение в перспективе. Итак:
Код AS3:

function init2()     //как я понимаю надо создавать отдеьные функции для каждого обекта в привязке по углам, всего 4. Тут я её переименовал
{
        stage.scaleMode=StageScaleMode.EXACT_FIT; 
        stage.addEventListener(Event.RESIZE, updateSize2)// задал еще имя
        stage.dispatchEvent(new Event(Event.RESIZE));
}
init2(); // как я понимаю это переменная- также нумерую
 
function updateSize2(e:Event)
{
        obj_1.x = stage.stageWidth - obj_1.width; // прижали к правому краю
        obj_1.y = stage.stageHeight/6 - obj_1.height; // прижали к верхнему краю..кстати непонятно почему именно 6- определил методом тыка       
}

в строке stage.scaleMode=StageScaleMode.EXACT_FIT; указывается на scalemode всей сцены. а как мне задать это к объекту в сцене? Присвоить объекту переменную и потом вместо stage подписать имя переменной? что то пробовал...не идет.
Кстати эти scalemode EXACT FIT единственный который подходит в данном случае, но и он растягивает под экран, то есть у монитора 4:3 будет пропорциональная, а у 16:9 сблюснутая картинка. Как то можно поставить чтобы объект изменял размер относительно своеих пропорций? Что то мне подсказывает что это делается через задания соотношения сторон объекта, да?

Zebestov 12.09.2012 19:20

Код AS3:

function exactFitProportional(obj:DisplayObject):void
{
        // масштаб по ширине, чтобы занять все пространство от левого до правого краев
        var scaleW:Number = stage.stageWidth / obj.width;
        // масштаб по высоте, чтобы занять все пространство от верхнего до нижнего краев
        var scaleH:Number = stage.stageHeight / obj.height;
        // выбираем наибольший из них
        var scaleMax:Number = Math.max(scaleW, scaleH);
        // пропорционально масштабируем объект
        obj.scaleX = scaleMax;
        obj.scaleY = scaleMax;
        // если нужно, выравниваем объект по центру
        obj.x = (stage.stageWidth - obj.width) / 2;
        obj.y = (stage.stageHeight - obj.height) / 2;
}

Пример использования
Код AS3:

exactFitProportional(obj_1)

Добавлено через 2 минуты
Забыл уточнить
Код AS3:

stage.scaleMode = StageScaleMode.NO_SCALE;


pomuс 12.09.2012 20:06

Если код
Код AS3:

stage.scaleMode = StageScaleMode.NO_SCALE;

надо было списать в тело скрипта выше, то ничего не выходит. Что атк что так, объект стал большим, (на четверть экрана) и не увеличиается, и не привязан ни какому краю.

Zebestov 12.09.2012 20:35

Это код для растягивания объектов на весь экран без пустых пространств и с соблюдением пропорций.

pomuс 12.09.2012 20:37

спасибо огромное за помощь!!
может попробую его приспособить!


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

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