2.6 KiB
2.6 KiB
MultipleStateImage
用于展示一个具有多个状态的图片控件,点击图片时可在不同状态间循环切换。该控件属于普通控件,继承自 bricks.Layout。
主要方法
-
set_state(state)
切换到指定的状态(state),并更新显示的图片。
参数:state(String) — 目标状态名称,必须是urls配置中存在的键。
-
change_state(event)
内部方法,响应图片的点击事件,自动切换到下一个状态,支持循环切换。触发state_changed自定义事件。
主要事件
state_changed
当图片状态发生改变时触发。
携带数据:当前状态名(String)。
源码例子
{
"id": "msi_example", // 控件唯一标识
"widgettype": "MultipleStateImage", // 控件类型,必须为已注册的控件名
"options": {
"state": "normal", // 初始化状态
"urls": { // 各状态对应的图片URL
"normal": "/images/button_normal.png",
"hover": "/images/button_hover.png",
"pressed": "/images/button_pressed.png"
},
"width": 100, // 图片宽度
"height": 80 // 图片高度
},
"binds": [
{
"actiontype": "event", // 绑定一个自定义事件派发
"wid": "msi_example", // 触发组件ID
"event": "click", // 监听点击事件
"target": "some_other_widget", // 目标控件ID
"dispatch_event": "image_clicked", // 派发事件名称
"params": {
"source": "MultipleStateImage" // 传递额外参数
}
},
{
"actiontype": "script", // 执行脚本,记录当前状态
"wid": "msi_example",
"event": "state_changed", // 监听状态变化事件
"target": "ConsoleLogger",
"script": "console.log('Image state changed to:', data);",
"params": {
"data": "{event_data}" // 使用运行时事件数据
}
}
]
}
💡 说明与注释:
MultipleStateImage将一组图片 URL 映射到不同的“状态”,通过调用set_state()或点击实现切换。- 每次状态变更会触发
state_changed事件,可用于联动其他控件或日志记录。- 此控件利用了
bricks.Image作为内部子控件进行渲染,并封装其行为。- 在 JSON 中使用时,需确保所有状态在
urls对象中都有对应图片地址。- 支持通过
binds绑定交互逻辑,例如点击后通知其他模块或执行脚本。