Показать сообщение отдельно
Старый 03.03.2016, 07:03
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 12  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Можешь объяснить на пальцах, как дочерние классы слушают-подписываются на эти изменения?
Им не надо ничего слушать. Задание скейл фактора происходит в главном классе, сразу после "устаканивания" размера сцены, так как на андроиде ее размеры меняются, пока приложение не развернется. Напиши просто какой-то отдельный метод, который будет все делить на этот скейл.
Я сделал так:
Код 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);
Таким образом, всё делается строго с нужным скейлом. На всех экранах в итоге выглядит одинаково.

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