Lynx 提供了一种类似于 Web 的事件机制,使开发者能够根据事件来设计和实现自定义的交互逻辑。
然而,与 Web 系统不同的是,Lynx 的事件响应机制支持双线程处理。这意味着事件处理函数可以根据需要,在主线程或后台线程中执行,从而优化性能和响应速度。
事件是系统中触发某种动作的信号,当事件触发时,开发者可以通过监听该事件,并执行相应的代码来实现相应的逻辑。例如,开发者可以监听点击事件,当用户点击页面时修改节点的背景颜色。
示例 1:
当用户在页面上进行点击操作时,系统将触发 tap
事件。
如图所示,开发者可以选择在主线程或后台线程中处理该事件。
具体来说,如果开发者想监听某个节点的点击事件,可以在该节点上设置 bind
类型的事件处理器属性:
如果事件处理函数运行在主线程上,则需要在事件处理器属性前额外添加 main-thread:
前缀,例如:
在 Lynx 中,事件处理器属性还可以实现事件拦截、跨元件事件监听的功能,具体可以参考事件传播。
当一个事件在节点上触发时,事件处理器属性设置的事件处理函数将被调用。这个函数将接收一个事件对象作为参数,其中包含了关于该事件的详细信息。
所有的事件对象都继承自 Event,开发者可以在事件处理函数中根据事件对象来编写事件处理逻辑。
当事件处理函数是一个主线程脚本时,需要在函数体的首行添加一个 'main thread'
指令表明该函数运行在主线程上。
在 Lynx 中,主线程和后台线程的事件对象是不同的,后台线程的事件对象是一个纯 json
对象,而主线程的事件对象是一个可以操作的 Event Object
。
Lynx 提供了多种操作节点的方式,具体参考操作节点。
例如,针对示例 1,当开发者选择在主线程处理事件时,可以直接在主线程脚本中拿到 e.currentTarget
并调用 setStyleProperty
修改节点的背景颜色。
示例 2
而对于后台线程的事件处理函数,开发者无法通过 e.currentTarget
直接操作节点,但可以通过 SelectorQuery
获取节点引用,再调用 setNativeProps
修改节点的背景颜色。
示例 3:
至此,你已经学会了如何监听用户的点击并根据事件对象执行相应的操作。
对于开发者来说,Lynx 的事件提供了类似于 Web 的 API,但又具有独特的双线程事件响应机制,使得开发者可以根据需要,选择在主线程或后台线程中执行事件处理,从而优化性能和响应速度。