操作:
按图所示,点击按钮b1,选中,然后找到该按钮的ontime事件,点击后面的小方框
代码自动出现:
void b1.ontimer()
{
}
这个表示我们可以在这个事件函数中书写定时器的语句
于是,将page0.sc修改为:
//0:开机界面
class app=loadcom(appbase);
class page=loadcom(page);
class l1=loadcom(label);
class l2=loadcom(label);
class b1=loadcom(button);
class b2=loadcom(button);
int sec; //定时值
void b1.onclick()
{
if(b1.text=="开"){
b1.text="关";
gpio_out(0,1);
}
else{
b1.text="延时中";
sec=15; //设置15s
settimer(100); //定时1s
}
}
void b2.onclick()
{
if(b2.text=="开"){
b2.text="关";
gpio_out(1,1);
}
else{
b2.text="开";
gpio_out(1,0);
}
}
void b1.ontimer()
{
sec--;
echo (sec);echo("\r\n"); //调试,正式运行可屏蔽
if (sec==0){
b1.text="开";
gpio_out(0,0);
settimer(0); //关闭定时器
}
else{
b1.text=sec+""; //+字符串的方式转成字符串
}
}
start();
代码讲解:
- 首先我们声明了一个全局变量:int sec; 用于存放定时值
- 我们修改b1.onclick事件,在按钮“关”操作的时候执行:
b1.text="延时中"; sec=15; //设置15s settimer(100); //定时1s
- 完成按钮的界面显示,以及赋值15s 和设置定时器
- 设置定时器的语句详见 settimer
- 然后构建Ontimer事件
void b1.ontimer() { sec--; echo (sec);echo("\r\n"); //调试,正式运行可屏蔽 if (sec==0){ b1.text="开"; gpio_out(0,0); settimer(0); //关闭定时器 } else{ b1.text=sec+""; //+字符串的方式转成字符串 } }
- 系统在设置完定时器后,会1秒钟调用ontimer事件一次,因此在这个事件中,对sec全局变量进行减少,并判断是否结束