Estratégias personalizadas de arrastar o bloqueio

Uma estratégia de arrasto de bloco é um objeto que determina como um bloco precisa processar arrastar. Eles implementam a lógica para tornar um bloco um arrastável. A criação de novas estratégias de arrasto de bloco permite mudar a forma como os blocos precisam processar arrastar sem precisar lidar com a criação de um selecionável personalizado ou processar a seleção.

Por exemplo, talvez você queira que o bloco seja duplicado ao arrastar, em vez de ser arrastado normalmente. As estratégias de arrastar com blocos permitem que você faça isso.

As estratégias de arrasto têm todos os mesmos métodos de uma IDraggable, além do método getRelativeToSurfaceXY.

Implementação

Para criar uma estratégia de arrastar, você precisa implementar a IDragStrategy. Isso requer os mesmos métodos que a interface IDraggable, exceto pelo método getRelativeToSurfaceXY, que o bloco já implementa.

Você pode seguir instruções para implementar um elemento arrastável para implementar sua estratégia de arrastar, mas pule a implementação de getRelativeToSurfaceXY().

Uso

Para usar uma estratégia de arrastar personalizada, você precisa aplicá-la a cada instance de um bloco. É possível fazer isso no método init do bloco, chamando setDragStrategy.

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