想象一个用 qooxdoo 编写的卡拉 OK 播放器/关键帧动画系统/等等。Player 对象将具有反映当前位置的属性。该属性将绑定到一些 GUI 控件,例如滑块,以便用户可以跳转到任意位置。同时,播放时播放机制会逐渐更新位置。
问题是,在这两种情况下应该应用不同的逻辑。
1)如果“位置”属性是从外部设置的(例如,用户点击了一个滑块),一些复杂的逻辑适用:我们应该重新计算活动的诗句/行/音节/关键帧对(可能使用二分搜索)并激活它;
2)如果属性已经被播放机制的迭代更新了,逻辑很简单:我们应该只检查下一个对象的边界是否已经越过,然后前进。
在这两种情况下,都应该调用标准逻辑(实例检查和触发更改事件)。我一直在考虑通过直接设置 $$user_position 变量来绕过复杂的“应用”方法,或者分析当前调用堆栈并据此采取不同的路径,但这两种方法似乎都是肮脏的黑客。这就是为什么我会感谢任何关于如何在 qooxdoo the Right™ Way® 中实施上述内容的建议。