文档管理中心

数字表达式<Expression>

功能概述

支持数值型表达式的解析,对写在参数中的表达式能够进行全局变量取值和计算,返回值是一个浮点型的数值。并且能够实时监听使用的全局变量,当全局变量变化的时候,能够实时修改该表达式的值。并且支持逻辑运算,数学计算,字符串操作等一系列的函数。数字表达式中参数只能够嵌套数字表达式中包含的函数、数值型变量、数值和其组成的表达式。当数值表达式解析的数值超过7位时会有精度问题,建议数值范围在7位及以内。其他功能点中类型为数值且支持表达式的参数可以调用数字表达式解析功能。

应用场景

可控制图片可见性,比如点击屏幕多少次,就切换壁纸;或者长轴图片的位移动效,制作出全景的效果等。

可实现视频的播放与停止,到一定的条件下,播放,否则停止。

XML规范

支持加减乘除取模括号和函数。

说明
  • 加减乘除取模 : + - * / % 。
  • 支持函数:sin, cos, tan, asin, acos, atan, sqrt, abs, min, max等,见下表。
  • 支持数组:如#number[expression],索引支持表达式解析。
  • 支持取全局变量和自定义的变量:如#screen_width。
展开

表达式

注 释

digit(x)

取给定数字的第几位,顺序为倒序从右往左,并且索引从1开始。例如digit(12345, 2) = 4 ,digit(12345, 1) = 5

round(x)

对输入的值四舍五入取整。负数时,小数点后<=0.5时向右取整,小数部分>0.5,则向左取整,例如round(4.5)=5, round(-4.5)=-4

int(x)

舍弃掉小数部分,例如int(4.5)=4, int(-4.5)=-4

rand()

取0到1之间的随机数,返回值为float。rand()在文本format属性中使用时,例如format="rand()=%d",rand()的值是0;rand()*10的值是0~9之间的随机整数,其中%d表示取整。

int(rand()*a+b)

得到的是b到b+a之间的随机整数

eq(x,y)

条件判断,x是否与y相等,当x、y相等时,此表达式值为1,否则为0。x,y都可以为表达式,下同。

ne(x,y)

条件判断,x是否与y不相等,当x、y不相等时,此表达式值为1,否则为0

ge(x,y)

条件判断,x是否大于等于y,当x大于等于y时,此表达式值为1,否则为0

gt(x,y)

条件判断,x是否大于y,当x大于y时,此表达式值为1,否则为0

le(x,y)

条件判断,x是否小于等于y,当x小于等于y时,此表达式值为1,否则为0

lt(x,y)

条件判断,x是否小于y,当x小于y时,此表达式值为1,否则为0

isnull(x)

条件判断,是否变量没有值,如果没有值返回1,有值返回0。x为全局变量,用于判断绑定的变量是否查到数据,例如:isnull(#var)或者isnull(@var)

not(x)

条件判断,x是否等于0,若等于0则返回1,如果不等于0则返回0

ifelse(x,y,z)

条件判断,如果x大于0,则返回值为y,否则返回值为z

ifelse(x1,y1,x2,y2,...,z)

if x1 > 0 return y1; else if x2 > 0 return y2; ... ; else return z。循环条件判断,如果x1大于零则返回y1,否则判断如果x2大于零则返回y2,否则判断xn是否大于零,如果大于0返回yn,否则返回z。至少有三个值x1,y1,z来完成整个条件的判断。如果在前面的返回中没有返回值,则最终返回最后一个值。

pow(x,y)

幂方函数,表示x的y次方的值,例如pow(2,3)=8

len(数字)

给定数字的数字的个数,例如len(1234)=4,len(-123.123)=6

sin(x)

三角函数正弦值,x为弧度值,返回sin(x)的值

cos(x)

三角函数余弦值,x为弧度值,返回cos(x)的值

asin(x)

反三角函数,当x为[-1, 1]时返回区间为[-pi/2,pi/2]的值,如果输入的绝对值超过1,返回的是0

acos(x)

反三角函数,当x为[-1, 1]时返回区间为[-pi/2,pi/2]的值,如果输入的绝对值超过1,返回的是0

tan(x)

正切值,返回x的正切值,当x的绝对值趋近pi/2的倍数可能因为精度问题导致不正常值

atan(x)

反正切值,返回x的反正切值

sqrt(x)

开平方函数,x为正数,如果输入x为负数则返回结果是0

abs(x)

返回一个数的绝对值

min(x, y)

返回x和y中的最小值

max(x, y)

返回x和y中的最大值

应用示例

示例一:表达式解析计算,t1变量值为3,计算公式为(10+2*3)/4,最终结果为4。

收起
自动换行
深色代码主题
复制
  1. <Var name="t1" expression="3"/>
  2. <Text x="50" y="10" size="30" format="(10+2*#t1)/4: %d" paras="(10+2*#t1)/4" />

示例二:数学公式计算,返回数值1.5的正弦余弦正切值。

收起
自动换行
深色代码主题
复制
  1. <Text x="50" y="100" size="30" format="sin(1.5),cos(1.5),tan(1.5): %d,%d,%d" paras="sin(1.5)*100,cos(1.5)*100,tan(1.5)"/>

示例三:条件判断,判断是否1大于0,结果返回为1。

收起
自动换行
深色代码主题
复制
  1. <Text x="50" y="1550" size="30" format="gt(1,0): %d" paras="gt(1,0)"/>

示例四:条件判断,判断1是否大于0,最终返回2。

收起
自动换行
深色代码主题
复制
  1. <Text x="650" y="1000" size="30" format="ifelse(1,2,3):%d" paras="ifelse(1,2,3)"/>

示例五:字符串函数,寻找字符串hello中的第一个e的位置,索引是从0开始,所以返回值为1。

收起
自动换行
深色代码主题
复制
  1. <Var name="a" expression="hello" type="string"/>
  2. <Text x="650" y="1350" size="30" format="strIndexOf(@a,'e'):%d" paras="strIndexOf(@a,'e')"/>

示例六:数字表达式中嵌套数字表达式,判断字符串变量a中e首次出现的位置是否小于3,此时返回值为1。

收起
自动换行
深色代码主题
复制
  1. <Var name="a" expression="hello" type="string"/>
  2. <Text x="650" y="1350" size="30" format="lt(strIndexOf(@a,'e'),3)" paras="lt(strIndexOf(@a,'e'),3)"/>

制作视频

在 内容分发 中进行搜索
请输入您想要搜索的关键词