当前位置: 首页 > news >正文

在compose中的Canvas用kotlin显示多数据波形闪烁的问题

在compose中的Canvas显示多数据波形闪烁的问题:当在Canvas多组记录波形数组时,从第一组开始记录多次显示,如图,当再次回到第一次记录位置再显示时,波形出现闪烁。

原码如下:

data class DcWaveForm(var bDat: Boolean,var isOpenEar:Boolean,var count:Int,val dat: IntArray = IntArray(20) ,  //220var lPoints: Array<Offset> = List(140){Offset(0f,0f)}.toTypedArray(),var rPoints: Array<Offset> = List(140){Offset(0f,0f)}.toTypedArray()
) 

class MyViewModel : ViewModel() {var mWaveForm: Array<DcWaveForm> by mutableStateOf(Array(11) {DcWaveForm(bDat = false,isOpenEar = false,count = 0,dat = IntArray(20) { 0 },lPoints = List(140){Offset(0f,0f)}.toTypedArray(),rPoints = List(140){Offset(0f,0f)}.toTypedArray())})var mStartCount by mutableStateOf(0)private set// 安全访问方法fun getWaveFormData(index: Int): DcWaveForm? {return mWaveForm.getOrNull(index)}// 批量更新方法fun updateWaveArray(index: Int, block: DcWaveForm.() -> Unit) {mWaveForm = mWaveForm.apply {getOrNull(index)?.let { data ->this[index] = data.apply(block)}}}fun updateStartCount(count:Int){mStartCount = count}}val viewModel = MyViewModel()

pointsLeft和pointsRight前面已经定义过,以为一直用就可以了,其它不然。直接用会出现闪烁,要重新定义则正常,如下:

相关文章:

  • 国产化Word处理控件Spire.Doc教程:Java实现HTML 转Word自动化
  • c#开发AI模型对话
  • Axios 取消请求的演进:CancelToken vs. AbortController
  • AWS中国区IAM相关凭证自行管理策略(只读CodeCommit版)
  • bug:undefined is not iterable (cannot read property Symbol(Symbol.iterator))
  • AI炼丹日志-28 - Audiblez 将你的电子书epub转换为音频mp3 做有声书
  • CATIA-CAD 拆图
  • 【从零学习JVM|第二篇】字节码文件
  • Kubernetes 网络方案:Flannel 插件全解析
  • MyBatis-Plus LambdaQuery 高级用法:JSON 路径查询与条件拼接的全场景解析
  • 判断:有那种使用了局部变量的递归过程在转换成非递归过程时才必须使用栈
  • 【从前端到后端导入excel文件实现批量导入-笔记模仿芋道源码的《系统管理-用户管理-导入-批量导入》】
  • 信号与系统汇总
  • OpenCV计算机视觉实战(10)——形态学操作详解
  • 【WPF】WPF 项目实战:构建一个可增删、排序的光源类型管理界面(含源码)
  • 2025 5 月 学习笔记
  • 705SJBH超市库存管理系统文献综述
  • 目标检测任务的评估指标P-R曲线
  • 企业私有化部署DeepSeek实战指南:从硬件选型到安全运维——基于国产大模型的安全可控落地实践
  • 图像处理、图像分析和图像理解的定义、联系与区别
  • 石家庄网站建设电商/广州百度seo优化排名
  • 服装设计公司主要做什么/天津优化代理
  • 新疆建设职业技术学院校园网站/网站引流推广
  • 对网站的赏析/电子商务网店运营推广
  • 专业网站建设好不好/建网站费用
  • 最好的网站开发系统/seo运营招聘