Перейти к содержимому


Фотография

safezoneX


Лучший Ответ vlad333000 , 15 September 2017 - 00:56

lopster102, берете размер от родительского элемента, вставляете в размер дочернего элемента, выделяете в скобки, через умножение или деление выбираем нужную долю родительского элемента

class ControlParent  ... {
  ...
  w = 0.25 * safeZoneW;
  ...

  class Control {
    class ControlChild ... {
      ...
      w = (0.25 * safeZoneW) * 0.5;
      ...
    };
  };
};
Перейти к сообщению


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 12

#1 OFFLINE   lopster102

lopster102

    Ст.сержант

  • Пользователи
  • 267 сообщений
  • Откуда:mscw

Отправлено 14 September 2017 - 04:08

подскажите пожалуйста формулу расчета safezoneX 


  • 0

#2 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 сообщений
  • Откуда:Кострома

Отправлено 14 September 2017 - 09:54

lopster102, спросите у разработчиков игры, ибо она зависит от разрешения и формата монитора/ов и масштаба интерфейса и вам наврятли тут кто-то скажет правильную формулу... да и нахрен ее знать...
Если вы что-то другое имели ввиду под фразой "Формула расчета", то вот

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание


Сообщение отредактировал vlad333000: 14 September 2017 - 09:57

  • 0

#3 OFFLINE   lopster102

lopster102

    Ст.сержант

  • Пользователи
  • 267 сообщений
  • Откуда:mscw

Отправлено 14 September 2017 - 16:49

lopster102, спросите у разработчиков игры, ибо она зависит от разрешения и формата монитора/ов и масштаба интерфейса и вам наврятли тут кто-то скажет правильную формулу... да и нахрен ее знать...
Если вы что-то другое имели ввиду под фразой "Формула расчета", то вот

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

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

 

 

попзже чуть чуть скрин скину 


Сообщение отредактировал lopster102: 14 September 2017 - 16:56

  • 0

#4 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 сообщений
  • Откуда:Кострома

Отправлено 14 September 2017 - 17:32

lopster102, внутри группы точка с координатаи [0, 0] всегда является верхним левым углом этогй группы, т. к. это сдвиг, а не реальные координаты (Высота и ширина соответствует действительности)
Если нужны реальные координаты контрола внутри группы, то:
private _ctrlGroupPos = ctrlPosition _ctrlGroup;
private _ctrlPos = ctrlPosition _ctrl;
private _ctrlRealPos = [(_ctrlGroupPos select 0) + (_ctrlPos select 0), (_ctrlGroupPos select 1) + (_ctrlPos select 1), _ctrlPos select 2, _ctrlPos select 3];

Сообщение отредактировал vlad333000: 14 September 2017 - 18:17

  • 0

#5 OFFLINE   lopster102

lopster102

    Ст.сержант

  • Пользователи
  • 267 сообщений
  • Откуда:mscw

Отправлено 14 September 2017 - 19:54

lopster102, внутри группы точка с координатаи [0, 0] всегда является верхним левым углом этогй группы, т. к. это сдвиг, а не реальные координаты (Высота и ширина соответствует действительности)
Если нужны реальные координаты контрола внутри группы, то:

private _ctrlGroupPos = ctrlPosition _ctrlGroup;
private _ctrlPos = ctrlPosition _ctrl;
private _ctrlRealPos = [(_ctrlGroupPos select 0) + (_ctrlPos select 0), (_ctrlGroupPos select 1) + (_ctrlPos select 1), _ctrlPos select 2, _ctrlPos select 3];

да я в курсе что [0,0] будет являться началом для каждого дочернего контрола  внутри родительского класса но лучше посмотри пожалуйста скрин

вот Здесь  размер интерфейса нормально 

 

Вот тут уже размер Интерфейса большой в настройках и все уехало


Сообщение отредактировал lopster102: 14 September 2017 - 20:23

  • 0

#6 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 сообщений
  • Откуда:Кострома

Отправлено 14 September 2017 - 20:31

lopster102, ну так а вы перезапустили игру?
  • 0

#7 OFFLINE   lopster102

lopster102

    Ст.сержант

  • Пользователи
  • 267 сообщений
  • Откуда:mscw

Отправлено 14 September 2017 - 20:33

lopster102, ну так а вы перезапустили игру?

да


  • 0

#8 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 сообщений
  • Откуда:Кострома

Отправлено 14 September 2017 - 20:55

lopster102, ну из того что я видел на скриншотах (Которые куда то пропали) кроме как проблемы уехавшего толи хинта, толи еще чего-то за границы экрана не вижу, а по этой проблеме спрошу: а у вас все значения являются SafeZone или есть какие-то константы (PixelGrid, UI_GRID и т. д.)?

Сообщение отредактировал vlad333000: 14 September 2017 - 20:56

  • 0

#9 OFFLINE   lopster102

lopster102

    Ст.сержант

  • Пользователи
  • 267 сообщений
  • Откуда:mscw

Отправлено 14 September 2017 - 21:14

lopster102, ну из того что я видел на скриншотах (Которые куда то пропали) кроме как проблемы уехавшего толи хинта, толи еще чего-то за границы экрана не вижу, а по этой проблеме спрошу: а у вас все значения являются SafeZone или есть какие-то константы (PixelGrid, UI_GRID и т. д.)?

вот в списке где оружие все контролы (картинки) на месте при размерах интерфейса (нормально)

[attachment=5902:20170914183725_1.jpg]

вот тут уже размер интерфейса (большой) и все картинки уехали все что в дочерних  контролах там абсолютные велечины все что в родительских там уже засейвино через сейф зоны  

 class Controls
    {
     class ListWeapons: RscControlsGroup
      {
                   idc = 1701;
                   x = 0.245018 * safezoneW + safezoneX;
                   y = 0.108982 * safezoneH + safezoneY;
                   w = 0.361225 * safezoneW;
                   h = 0.374017 * safezoneH;
                    class Controls
                    {
                      class Background: RscText
                      {
                          idc = -1;
                          x = 0;
                          y = 0;
                          w = 1;
                          h = 2.5;
                          colorBackground[] = {0, 0, 0, 0.2};
                      };
                      class Row1: RscControlsGroup
                      {
                              idc = 1;
                              x = 0;
                              y = 0;
                              w = 0.7;
                              h = 0.25;
                                class Controls
                                {
                                      class PictureBackRightUP: RscPicture
                                      {
                                            idc = -1;
                                            style = 48;
                                            text = "icons\shadowpicture2.paa";
                                            x = 0.25;
                                            y = 0;
                                            w = 0.22;
                                            h = 0.2;
                                      };

Сообщение отредактировал lopster102: 15 September 2017 - 05:21

  • 0

#10 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 сообщений
  • Откуда:Кострома

Отправлено 14 September 2017 - 22:04

lopster102, а ну так и правильно что улетели, вы же используете абсолютные значения для дочерних элементов, а при изменении масштаба интерфейса абсолютные значения меняются (Логически, не физически)
Для примера, вы выставили ширину 0.22 (Выставлено окно 800x600 (4:3)):
Очень маленький - ширина экрана 2.12766 - ваш элемент занимает ~10% ширины экрана
Маленький - ширина экрана 1.81818 - ваш элемент занимает ~12% ширины экрана
Нормальный - ширина экрана 1.42857 - ваш элемент занимает ~15% ширины экрана
Большой - ширина экрана 1.17647 - ваш элемент занимает ~18% ширины экрана
Очень большой - ширина экрана 1.0 (Только для соотношения сторон 4:3) - ваш элемент занимает 22% ширины экрана
Размер группы вы выставили как 0.361225 * safezoneW - т. е. ~36%, этот размер вы хотите поделить примерно по полам между двумя элементами (т. е. ~18% на каждый элемент)
Итог: на низких масштабах интерфейса ваш элемент будет оставлять пустое пространство справа (8%, 5% и 3% соответственно), при большом будет соответствовать вашей задумке, при очень большом вылезет на 4% вправо от ширины экрана
Если хотите что бы ни куда не улетало, то делите ширину родительского элемента и не используйте абсолютные значения

Сообщение отредактировал vlad333000: 14 September 2017 - 22:06

  • 0

#11 OFFLINE   lopster102

lopster102

    Ст.сержант

  • Пользователи
  • 267 сообщений
  • Откуда:mscw

Отправлено 14 September 2017 - 22:43

lopster102, а ну так и правильно что улетели, вы же используете абсолютные значения для дочерних элементов, а при изменении масштаба интерфейса абсолютные значения меняются (Логически, не физически)
Для примера, вы выставили ширину 0.22 (Выставлено окно 800x600 (4:3)):
Очень маленький - ширина экрана 2.12766 - ваш элемент занимает ~10% ширины экрана
Маленький - ширина экрана 1.81818 - ваш элемент занимает ~12% ширины экрана
Нормальный - ширина экрана 1.42857 - ваш элемент занимает ~15% ширины экрана
Большой - ширина экрана 1.17647 - ваш элемент занимает ~18% ширины экрана
Очень большой - ширина экрана 1.0 (Только для соотношения сторон 4:3) - ваш элемент занимает 22% ширины экрана
Размер группы вы выставили как 0.361225 * safezoneW - т. е. ~36%, этот размер вы хотите поделить примерно по полам между двумя элементами (т. е. ~18% на каждый элемент)
Итог: на низких масштабах интерфейса ваш элемент будет оставлять пустое пространство справа (8%, 5% и 3% соответственно), при большом будет соответствовать вашей задумке, при очень большом вылезет на 4% вправо от ширины экрана
Если хотите что бы ни куда не улетало, то делите ширину родительского элемента и не используйте абсолютные значения

на что делить можно уточнить?в этом то и вопрос что сам родительский класс это групп контрол его размер не будет иметь же значения для размеров дочерних классов и засейвив родительский класс это не повлияет на размеры вложенных классов так как  для вложенных классов я так понял сейв зона должна рассчитываться не  с глобальной сетки а с начала того самого родительского класса чтобы можно было сохранить размер контролов которые внутри контрл групп

 

P.S safeZone для "class картинкавнутристроки"     Не работает.

 class  список: RscControlsGroup
      {
                   idc = 1701;
                   x = 0.245018 * safezoneW + safezoneX;
                   y = 0.108982 * safezoneH + safezoneY;
                   w = 0.361225 * safezoneW;
                   h = 0.374017 * safezoneH;
                    class Controls
                    {
                      
                      class строка1: RscControlsGroup
                      {
                              idc = 1;
                              x = 0;
                              y = 0;
                              w =  0.181225 * safezoneW;
                              h = 0.25;
                                class Controls
                                {
                                      class картинкавнутристроки: RscPicture
                                      {
                                            idc = -1;
                                            style = 48;
                                            text = "icons\shadowpicture2.paa";
                                            x = 0.25;
                                            y = 0;
                                            w = 0.22;
                                            h = 0.2;
                                      };
                      };
                 };     
             };
          };   

Сообщение отредактировал lopster102: 15 September 2017 - 00:10

  • 0

#12 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 сообщений
  • Откуда:Кострома

Отправлено 15 September 2017 - 00:56   Лучший Ответ

lopster102, берете размер от родительского элемента, вставляете в размер дочернего элемента, выделяете в скобки, через умножение или деление выбираем нужную долю родительского элемента
class ControlParent  ... {
  ...
  w = 0.25 * safeZoneW;
  ...

  class Control {
    class ControlChild ... {
      ...
      w = (0.25 * safeZoneW) * 0.5;
      ...
    };
  };
};

  • 0

#13 OFFLINE   lopster102

lopster102

    Ст.сержант

  • Пользователи
  • 267 сообщений
  • Откуда:mscw

Отправлено 15 September 2017 - 19:47

теперь стало  понятно что значит логически - "при изменении масштаба интерфейса абсолютные значения меняются (Логически, не физически)"


  • 0




Яндекс.Метрика