DevEcoStudio实现随机数生成(定时),后端+前端(分离)
·
版本DevecoStudio5.0.4;
Api:16
调试真机nova12pro
对应Api:17
1后端文件
定义接口(用来存储何显示数据,并且导出)
export interface RandomData{
temp:number;//温度
hum:number;//湿度
ill:number;//光照
}
定义一个函数,生成相关的随机数,本文章教的是有范围限定的(可选)
function getRandomFloat(min:number,max:number):number{
return Math.random()*(max-min)+min;
}
/**
* 生成 [min, max) 范围内的随机浮点数
* @param min 最小值(含)
* @param max 最大值(不含)
*/
定义一个可导出的函数,用来生成一组随机数据
export function generateRandomData():RandomData{
return{
temp:parseFloat(getRandomFloat(27,28).toFixed(2)),
hum:parseFloat(getRandomFloat(60,75).toFixed(2)),
ill:parseFloat(getRandomFloat(14000,16000).toFixed(2)),
};
}
//.toFixed(2))保留2位小数
2前端文件
定时器+初始化
@Entry
@Component
struct MyComponent {
intervalId?: number;//声名为可选类型
@State randomData: RandomData = generateRandomData(); // 初始随机数据
private intervalId: number; // 保存定时器ID
aboutToAppear() {
// 每3秒生成一次随机数据
this.intervalId = setInterval(() => {
const rand:RandomData=generateRandomData();
this.temp=rand.temp;
this.hum=rand.hum;
this.ill=rand.ill;
}, 3000); // 3000毫秒 = 3秒
}
aboutToDisappear() {
// 清除定时器
clearInterval(this.intervalId);
}
UI结构+显示
build() {
Column() {
Text(`温度: ${this.randomData.temp}°C`)
.fontSize(20)
Text(`湿度: ${this.randomData.hum}%`)
.fontSize(20)
Text(`光照: ${this.randomData.ill} lux`)
.fontSize(20)
}
.width('100%')
.justifyContent(FlexAlign.Center)
}
}
更多推荐



所有评论(0)