块拖动策略是一个对象,用于确定块应如何处理拖动。它们会实现相应的逻辑,将代码块设为可拖动。通过创建新的块拖动策略,您可以切换块处理拖动的方式,而无需创建自定义可选择或处理选择。
例如,您可能希望在拖动时复制图块,而不是正常拖动。通过阻止拖动策略,您可以做到这一点。
除了 getRelativeToSurfaceXY
方法之外,拖动策略的方法与 IDraggable
完全相同。
实现
如需创建拖动策略,您需要实现 IDragStrategy
接口。这需要使用与 IDraggable
接口相同的方法,但代码块已实现的 getRelativeToSurfaceXY
方法除外。
您可以按照实现可拖动项的说明来实现拖动策略,但跳过实现 getRelativeToSurfaceXY()
。
用量
如需使用自定义拖动策略,您需要将拖动策略应用于块的每个实例。您可以在块的 init
方法中通过调用 setDragStrategy
来完成此操作。
Blockly.Blocks['my_block'] = {
init: function() {
// Other initialization...
this.setDragStrategy(new MyDragStrategy());
// Other initialization...
}
}