目录

周期命令<CycleCommand>

功能概述

CycleCommand主要和控件数组Array配合使用,旨在通过一行代码周期性地执行多条VariableCommand命令,实现对数组变量的赋值,可以降低代码量。

XML规范

<!--方式1:通过frequency来控制周期命令执行,indexFlag从[0,frequency-1]--->
<CycleCommand frequency="" indexFlag="" cycleCondition="">   
    <VariableCommand name="" type="" index="" expression=""/>
</CycleCommand>

<!--方式2:通过begin,end来控制周期命令执行,indexFlag从[begin,end]--->
<CycleCommand begin="" end="" indexFlag="" cycleCondition="">
    <VariableCommand name="" type="" index="" expression=""/>
</CycleCommand>

周期命令根据frequency或begin、end确定周期循环范围[0,frequency-1]或[begin,end],在每次循环时对数组索引变量indexFlag进行赋值,同时执行VariableCommand命令来对数组变量赋值。

参数说明

参 数

类 型

选 项

注 释

indexFlag

字符串

必填

索引变量标识,用来表示循环次数的变量名,在VariableCommand的expression中会被引用

frequency

数值

必填

控制周期命令执行次数,indexFlag索引变量取值范围是[0,frequency-1];若设置frequency,则begin,end参数无效

begin

数值

选填

indexFlag索引变量从begin开始循环;通过begin,end参数确定循环范围为[begin,end],实现对索引变量的赋值

end

数值

选填

indexFlag指定的变量到达end时终止计算

cycleCondition

数值

选填

周期命令执行条件,当cycleCondition不为0时执行VariableCommand命令,支持数值表达式

应用示例

示例一:与数组Array组合使用,实现在屏幕上格式化展现0-99这100个数字。Var标签定义名为find的数组变量#find[],数组大小为100;Array标签中实现对100个文本的textExp和坐标等赋值;当点击按钮时CycleCommand循环100次,使得indexFlag中的索引变量#col从0增至99;在每次循环时,变量命令将expression中的#col变量的值赋值给#find[#col]变量(即find数组中的第#col个元素),最终通过Array中Text显示在屏幕上。注意:VariableCommand与Var中的type定义为number[],表示find数组是整数数组。

<Var name="find" type="number[]" size="100"/>
<Array x="100" y="300" frequency="100" indexFlag="__i" >
    <Text textExp="#find[#__i]" size="30" align="center" x="#__i%10*90" y="int(#__i/10)*90"/>
</Array>
<Button x="0" y="0" w="1080" h="1920">
        <Trigger action="up">
            <CycleCommand frequency="100" indexFlag="col">
                <VariableCommand name="find" type="number[]" index="#col" expression="#col"/>
            </CycleCommand>
        </Trigger>
</Button>

示例二:通过begin,end参数实现对数组find[0]=0到find[99]=99赋值,是示例一中使用frequency参数实现的周期命令的另一种写法。

<CycleCommand begin="0" end="99" indexFlag="col">
    <VariableCommand name="find" type="number[]" index="#col" expression="#col"/>
</CycleCommand>

示例三:通过设置cycleCondition使得在屏幕上显示除20以外的0-99数值。设置cycleCondition=ne(#col,20),当#col不等于20时,ne(#col,20)=1,执行变量赋值命令,当#col等于20时,ne(#col,20)=0,#find[20]=20该变量命令不会执行,所以#find[20]变量为空值,最终屏幕中只会显示除20以外的0-99数值。

<Var name="find" type="number[]" size="100" />
<Array x="100" y="300" frequency="100" indexFlag="__i" >
    <Text textExp="#find[#__i]" size="30" align="center" x="#__i%10*90" y="int(#__i/10)*90"/>
</Array>
<Button x="0" y="0" w="1080" h="1920">
        <Trigger action="up">
            <CycleCommand begin="0" end="100" indexFlag="col" cycleCondition="ne(#col,20)">
                <VariableCommand name="find" type="number[]" index="#col" expression="#col"/>
            </CycleCommand>
        </Trigger>
</Button>