Estrategias personalizadas de arrastre de bloque

Una estrategia de arrastre de bloques es un objeto que determina cómo un bloque debe controlar arrastra. Implementan la lógica para que un bloque sea arrastrable. Crear nuevas estrategias de arrastre de bloques te permite cambiar la forma en que los bloques deben controlar los arrastres sin tener que crear un elemento seleccionable personalizado o controlar la selección.

Por ejemplo, tal vez prefieras que el bloque se duplique al arrastrar, en lugar de arrastrando normalmente. Las estrategias de arrastre de bloques te permiten hacerlo.

Las estrategias de arrastre tienen los mismos métodos que un IDraggable, además del método getRelativeToSurfaceXY.

Implementación

Para crear una estrategia de arrastre, debes implementar la interfaz IDragStrategy. Esto requiere todos los mismos métodos que la interfaz IDraggable, excepto el método getRelativeToSurfaceXY, que el bloque ya implementa.

Puedes seguir las instrucciones para implementar un elemento desplazable para implementar tu estrategia de arrastre, pero omite la implementación de getRelativeToSurfaceXY().

Uso

Para usar una estrategia de arrastre personalizada, debes aplicarla a cada instancia de un bloque. Puedes hacerlo en el método init de tu bloque llamando a setDragStrategy.

Blockly.Blocks['my_block'] = {
  init: function() {
    // Other initialization...
    this.setDragStrategy(new MyDragStrategy());
    // Other initialization...
  }
}