Хотя Transform
позволяет вам изменять внешний вид элементов или групп элементов, могут быть случаи, когда вам нужно переключиться между списком поведений на основе некоторого условия. Это аналогично оператору switch
или оператору if…else
в других языках.
Например, вы можете захотеть показывать разный фон для раннего утра, утра, обеда, дня, вечера и ночи.
Condition
операторы в формате циферблата позволяют включать различные части сцены циферблата в зависимости от оценки выражений, например:
<Condition>
<Expressions>
<Expression name="is_early_morning">
<![CDATA[[HOUR_0_23] >= 6 && [HOUR_0_23] < 8]]
</Expression>
<Expression name="is_morning">
<![CDATA[[HOUR_0_23] < 12]]
</Expression>
...
</Expressions>
<Compare expression="is_early_morning">
<!-- Early morning content here -->
<Group ... />
</Compare>
<Compare expression="is_morning">
<!-- Morning content here -->
<Group ... />
</Compare>
...
<!-- The "else" case -->
<Default>
<!-- content -->
</Default>
</Condition>
Несколько замечаний относительно условий:
- Используется первый элемент
Compare
, гдеexpression
true
, а остальные игнорируются. - Благодаря формату XML часто проще всего заключить определение выражения в элемент
CDATA
, как показано здесь, поскольку это позволяет избежать необходимости экранирования XML с использованием элементов сущности, таких как>
и&
- Структуры
Condition
могут быть вложенными.