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

[UB2] Макросы

В этой теме 1 комментарий

Рекомендуемые комментарии

5 274
[LESTA]
Разработчик
1 414 публикации
7 730 боёв

Macro

Макрос - именованный параметризированный фрагмент верстки, который место вызова заменяет на содержимое макроса на этапе разбора. Тем не менее не может работать со скоупом родителя и переменные для работы нужно передавать как при вызове элемента. Позволяет переиспользовать одинаковые блоки кода несколько раз.

 

Вот одно из самых распространенных использований:

Скрытый текст

# объявление
(def macro trace(expr:expression)
    (block
        (tf
            (class $TextHUD16Bold)
            (bind text "expr")
        )
    )
)
...
# использование
(macro trace expr="variable")

 

 

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

Скрытый текст

# Определение макроса
(def macro trace(expr:expression)
    (block
        (style
            (backgroundColor = "0x50000000")
        )
        (tf
        (class $TextHUD16Bold)
            (style (textColor = "0xFFFF00FF"))
            (autoSize='left')
            (bind text "expr")
        )
    )
)

 

 

После того как макрос был определен, его можно вызывать в любом месте.

Пример:

# Вызов макроса
(macro trace expr="variable")

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

Пример:

Скрытый текст

(def macro ButtonModel()
    (scope
        (event onClicked)
  
        (var rawLabel:str = '')
        (var label:str = '')
        (var isEnabled:bool = true)
        (var icon:gfx = null)
        (var iconAfterText:bool = true)
    )
)

 

 

  • Плюс 2

Рассказать о публикации


Ссылка на публикацию

×