Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flash Приложения: AIR, Zinc и тд. (http://www.flasher.ru/forum/forumdisplay.php?f=94)
-   -   Подготовка графики для портирования на мобильные платформы (http://www.flasher.ru/forum/showthread.php?t=212507)

namespaces 02.03.2016 22:27

Цитата:

Сообщение от caseyryan (Сообщение 1192355)
scaleFactor = 1024 / stage.stageWidth;
[/as3]
А потом все размеры и позиции делятся на этот скейл фактор.
Почему 1024? Потому что у меня максимальный размер графики сделан под экран 1024х600

Можешь объяснить на пальцах, как дочерние классы слушают-подписываются на эти изменения?
Или ты имеешь в виду все приложение поместить в один общий контейнер и изменять скейл для всех объектов сразу?

caseyryan 03.03.2016 07:03

Цитата:

Можешь объяснить на пальцах, как дочерние классы слушают-подписываются на эти изменения?
Им не надо ничего слушать. Задание скейл фактора происходит в главном классе, сразу после "устаканивания" размера сцены, так как на андроиде ее размеры меняются, пока приложение не развернется. Напиши просто какой-то отдельный метод, который будет все делить на этот скейл.
Я сделал так:
Код AS3:

// scaled pixels
public function sp(value:Number):Number {
    return value / Main.scaleFactor;
}

и вынес эту функцию на уровень пакета.
А где надо что-то сделать с относительным скейлом, например задать ширину контейнера с параллаксом, я делаю так:
Код AS3:

someContainer.width = sp(500); // на экране 800х480 скейл получается 1.28, значит вместо 500 ширина в итоге будет 390,625
someContainer.height = sp(300);
someContainer.x = sp(20);
someContainer.y = sp(100);

Таким образом, всё делается строго с нужным скейлом. На всех экранах в итоге выглядит одинаково.

п.с. Ну и если проект делается на старлинге, то этот же скейл фактор нужно передать ассет менеджеру при инициализации, чтобы он все текстуры создавал тоже с учетом этого скейла.

namespaces 03.03.2016 13:28

Цитата:

Сообщение от caseyryan (Сообщение 1192367)
Им не надо ничего слушать. Задание скейл фактора происходит в главном классе, сразу после "устаканивания" размера сцены, так как на андроиде ее размеры меняются, пока приложение не развернется.

Ясненько. А не проще ли использовать классы от Greensock > layout > LiquidStage и LiquidArea?

caseyryan 03.03.2016 15:02

Цитата:

А не проще ли использовать классы от Greensock > layout > LiquidStage и LiquidArea?
Проще одного метода? Как сам-то думаешь?
Тем более как поможет лейаут от гринсока располагать, допустим, персонажей в игре или объекты локации?

namespaces 03.03.2016 15:43

Цитата:

Сообщение от caseyryan (Сообщение 1192371)
Проще одного метода? Как сам-то думаешь?
Тем более как поможет лейаут от гринсока располагать, допустим, персонажей в игре или объекты локации?

У этого класса есть еще несколько возможностей, например, система сеток как в бутстрап. Объекты можно расположить по этим ячейкам. Или я что то не понял..

caseyryan 03.03.2016 19:36

Цитата:

Или я что то не понял..
Что-то не понял. Ты говоришь о лейаутах, а они тут вообще ни коим боком не пригодятся. В игре лейауты не нужны. Разве что для хадов и меню, но и там надо знать скейл, чтобы размеры ячеек задавать. Скейл так же нужен для генерации текстур. От него никуда не денешься


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

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