+2
Waiting for user's reply

Недокументированные свойства кнопок для скриптов

Oleg Bubnov 3 years ago in iRidium Script updated by Ilya Markov (expert) 3 years ago 12

  1. Руководство обозначает свойство состояния DrawOrder, но никак его не описывает. Можно ли его использовать? Если да, то как? Я попытался использовать вот такой подход: btn.GetState(0).DrawOrder = "Fill Image Border Text Icon"; - кнопка исчезла с экрана, но на нажатия реагировала. Такой же результат, если через запятую перечислять.
  2. То же самое со свойством Font. В руководстве описано, что можно использовать только Тахому-20. Можно ли в скрипте поменять как-то значение и размер шрифта при помощи скрипта? Например, используя FontId? Если да, то как?
  3. Можно ли задать свойство Image однажды для всех состояний? Аналогично свойству Text.
  4. Если скриптом нельзя полноценно создать экземпляр кнопки, тогда как решать эту задачу? Создавать некий шаблон кнопки в Студио и потом уже его прятать на никогда не вызываемой странице, размножать и изменять?
+1
Answered

1. Порядок отрисовки слоев указывается как последовательность чисел от 1 до 5, оформленная как НЕХ:

IR.GetPage("Page 1").GetItem("Item 1").GetState(0).DrawOrder = 0x34521

Каждое число означает слой. Верхний слой - первое число, нижний - последнее. Стандартная последовательность слоев 0x34521

  • 3 - Icon (иконка)
  • 4 - Text (текст)
  • 5 - Border (бордюр)
  • 2 - Image (картинка)
  • 1 - Fill (заливка)

Т.е, например, чтобы отрисовать текст поверх иконки, нужно написать:

IR.GetPage("Page 1").GetItem("Item 1").GetState(0).DrawOrder = 0x43521

Постараемся добавить в документацию.


2. Пример смены шрифта ссылка добавлена в документацию, спасибо за замечание


3. Нет, только каждому состоянию в отдельности


4. В случае с кнопкой, каких свойств не хватает, чтобы создать "полноценный экземпляр"? Размножать элементы можно, но только в пределах страницы, методом .Clone(). Копирования свойств пока нет. Вы можете создать страницу(попап)-шаблон и клонировать ее целиком, а затем модифицировать элементы на клоне страницы.

Большое спасибо за разъяснения! По поводу четвертого пункта, собственно, я не понимал, как решать первые два пункта через скрипт. А так, собственно всего хватает.

А как узнать текущий размер шрифта?
Например, хочу увеличить шрифт. Через св-во Font узнаю имя шрифта, через FontId текущий идентификатор. Осталось узнать размер у текущего шрифта и можно собрать новый или переопределить старый. Как узнать это текущий рамер?

добрый день.

вы можете установить новый размер шрифта. Пример тут:

http://dev.iridiummobile.net/JS_Samples#Управление_шрифтом

Но получить текущий размер шрифта не можете

Интересно, это такая сложная задача? Ведь сам шрифт вытаскивается... Может, этот вопрос не подымался, не знаете? Ведь как я, например картинку, на которой несколько айтемов с разными векторно-шрифтовыми иконками смогу пропорционально увеличить/уменьшить? Там ведь разные шрифты и размеры.

+3

Я поставил эту задачу в очередь разработку. В будущих версиях появится

Виктор, добрый день

Реализовали получения размера шрифта. Доступно в текущем релизе. Свойство называется FontSize

Пример использования IR.GetItem("Страница 1").GetItem("Item 1").GetState(0).FontSize;

Waiting for user's reply

Илья, здравствуйте!

Отличная новость, спасибо. Сейчас буду дорабатывать масштабирование и опробую функцию. Интересно, как рамеры шрифта будут соотноситься фактическим отображением? Вот и посмотрю.

Илья, у меня не работает:


_log ("Текст на подложке: " + IR.GetPopup("FirstFloor").GetItem("IBase").GetState(0).Text)

_log ("Размер шрифта на подложке: " + IR.GetPopup("FirstFloor").GetItem("IBase").GetState(0).FontSize)

Текст возвращает, размер - undefined

версия новейшая не бета

Извиняюсь, я вас дезинформировал. Это свойство вошло в версию 1.1.7, которая сейчас в бете