7. 特殊说明

7.1. 全局控件属性跨页面读写

全局控件: 基础属性的全局属性设置为全局。全局控件的属性会加载到运行内存,修改了属性后,切换页面也不会丢失。

写法:[页面].[控件].[属性]

// 当前运行页面为page0
page1.b1.x = 100;                // b1为全局控件,跨页面给page1.b1.x赋值。
page1.page1.bg.color = 0x1234;   // page1为全局页面控件,跨页面给page1.page1.bg.color赋值。

// 当前运行页面为page1
b1.x = 100;                      // b1为全局控件,且在当前运行页面,写法和普通私有控件一样

提示

  • 全局控件会占用运行内存,非必要不建议设为全局

  • 定时器控件设为全局,切换页面会释放,并不能实时计时。

7.2. 控件组写法使用

通常读写当前页面的控件属性的写法是 b1.x,如果想多个控件x坐标按规律排布只能这样写:b0.x=10 b1.x=20 b2.x=30, 代码非常多。然而使用控件组写法实现就相对简单很多。

控件组写法: wid[ 控件id ]. 属性
  • 控件id: 控件的id,数值型变量或常量。

  • 属性: 用户输入控件属性,如wid[1].x 、wid[1].bg.color。

用法举例

// 将以下代码写在页面初始化前事件,页面加载后则可以看到控件有规律的排布

int i;

for (i = 1; i < 10; i++)    // 页面控件id为0,且页面控件的x坐标是只读的,所以i要从1开始
{
    wid[i].x = i * 40;       // 给控件id为1-9的控件的x坐标赋值,赋的值为:0 40 80...
    wid[i].y = 100;
}

警告

上位机编译时不会检查用户输入的属性是否存在,如:wid[1].abcd 是不会报错的。 但在脚本执行时,会检查属性是否存在,是否可写,并报错。运行过程,一旦报错后, 后面的代码不会被执行,请自行确保输入的属性是存在的!

7.3. 脚本执行中途出错

举例

b1.x = 100;
b1.y = 100;
page(1);  // 执行这步后,直接退出了,后面的代码不会执行。
b1.txt.str = "123";
b1.x = 200;
b1.y = 150;

警告

  • 脚本执行过程,如遇到报错或者调用了page(页面切换)指令,后面的代码不会被执行!

  • 报错后,串口输出报错信息,详细信息请参考 脚本执行异常

7.4. 串口发送脚本

警告

串口发送脚本只支持执行,赋值表达式、调用指令。发送 if else while for等语句,会报错!