echarts symbol 回调函数_ECharts 做的另一种猜数小游戏

4287ed226538fcbee33fd14468f5dea9.png

昨天突然想起上学时玩的文曲星(电子词典),里面有个猜数字的小游戏,于是拿 ECharts 试着做了一下,大体思路如下:

  1. 用基于直角坐标系上的 heatmap 做虚拟按键
  2. 用 graphic.elements[i]-text 和 graphic.elements[i]-rect 做文本框、提示框
  3. 监听 heatmap 的点击事件,输入数字、猜数

heatmap 虚拟按键实现

heatmap 数据准备

// 准备 heatmap 的按钮数据,用 '-1' 作为退格按钮、'-2'作为猜数按钮 

heatmap 所在 x、y 坐标轴数据

var 

heatmap 部分配置项

option 
  • grid:直角坐标系位置等配置
  • tooltip:隐藏提示框
  • xAxis 和 yAxis:x 轴和 y 轴配置
  • series[i]-heatmap:热力图配置,其中 label.formatter 使用回调函数把 '-1' 和 '-2' 分别换成 '←' 和 '猜',data 绑定之前准备好的heatmap 数据

graphic 输入框、提示框实现

输入框、提示框生成函数( 4个方块数字框 + 提示框),这个函数返回的 JSON 对象用于 option.graphic 配置

// 输入框、提示框生成函数( 4个方块数字框 + 提示框)
  • graphic.elements[i]-group:可以有子节点的容器
  • graphic.elements[i]-text:文本块
  • graphic.elements[i]-rect:矩形块
  • 一个文本块和一个矩形块组成一个数字显示框,一起放到容器内部,通过容器整体定位
  • 循环 4 次,生成 4 个包含文本块的容器,排成一行显示
  • 单独添加一个文本块用于显示提示信息
  • (偷懒没有按百分比定位)

交互部分实现

监听 heatmap 上的点击事件

// 点击热力图时调用 btnClick 函数
  • params:用于传入图表的点击事件的基本参数
    • params.seriesId:对应 option.series[i]-id
    • params.data:对应 option.series[i]-data,此处 params.data[0] 对应 xAxis坐标,params.data[1] 对应 yAxis 坐标,params.data[2] 是该坐标对应的数值(也就是此前生成的按钮数据)
  • times:用于记录还剩下几次猜数字机会

btnClick 函数定义

// 按钮点击响应函数
  • inputList:预先定义好的,用于存放猜数列表的数组变量
  • <表达式1> ? <表达式2> : <表达式3> 三元表达式,如果<表达式1> 为真,则执行<表达式2>,否则执行<表达式3>
  • btnID:传入的按钮数据
    • 当 btnID 等于 '-1' 时,删除 inputList 最后一个数字
    • 当 btnID 等于 '-2' 时,猜数字或提示不足 4 位数字
    • 当 btnID 等于其他值时(0 到 9),在 inputList 末尾插入或替换一个数字
  • myChart.setOption(option):更新图表,默认将 option 与之前的图标配置项合并
  • myChart.setOption(option, false):更新图表,用此 option 替换原配置项

guess 函数定义

猜数函数
  • 变量 A:数字和位置都猜对的数量
  • 变量 B:仅数字猜对但位置猜错的数量
  • 通过 for 循环分别匹配每一位所猜数字,根据匹配结果 A++ 或者 B++
    • Array.indexOf(item) 方法,从 array 里查找 item ,如果存在则返回匹配的 Index ,否则 返回 -1
  • 匹配完成后,如果 A === 4 则猜对了,否则通过类似 0A1B 的方式提示猜数的结果,通过 myChart.setOtion() 更新图表的提示区

点击链接查看 ECharts Gallery 例子(建议PC查看)

ECharts Gallery​gallery.echartsjs.com
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值