Verbindungsvorschauen

Ein Tool für die Verbindungsvorschau erstellt eine visuelle Vorschau einer ausstehenden Verbindung. Es zeigt an, wo der Ziehblock verbunden wird, wurde verworfen.

Die Standardvorschau für Verbindungen platziert Platzhaltermarkierungen. wo sich Bausteine verbinden. Verbindungen werden hervorgehoben und Auswirkungen auf Blöcke, die ersetzt und getrennt werden.

Demonstration des integrierten Previewers

Arten von ausstehenden Verbindungen

Es gibt zwei Arten von ausstehenden Verbindungen. In einem Fall kann der heruntergefallene Block ersetzt einen vorhandenen Block und die bestehende Blockierung wird getrennt. Im anderen wird der heruntergesetzte Block eingeführt, ohne andere Blöcke zu trennen.

Ersatz

Ersetzt wird, wenn eine Verbindung am gezogenen Block hergestellt wird. die bereits blockiert ist, sodass die bestehenden zum erneuten Anhängen. Sobald der verschobene Block entfernt wird, wird getrennt und der verschobene Block wird an seiner Stelle verbunden.

Standardmäßig wird dies durch Ausblendung des betreffenden Blocks angegeben. ersetzt.

Das integrierte Ersatzgerät
Vorschau

Einfügen

Das Einfügen erfolgt in zwei Fällen. Das passiert, wenn eine Verbindung Block stellt eine Verbindung zu einer Verbindung her, die leer ist. Und das passiert, wenn ein Verbindung des per Drag-and-drop eingefügten Blocks zu einer Verbindung, die bereits -Block, kann aber zwischen den beiden vorhandenen Blöcken eingefügt werden, sodass der vorhandene Block wird nicht getrennt.

Standardmäßig wird dies durch das Erstellen von Einfügungsmarkierungen und das Hervorheben der Verbindungen, die eine Verbindung herstellen.

Die integrierte Einfügung
Vorschau

Benutzerdefinierte Vorschau erstellen

Wenn Sie für die Vorschau ausstehender Verbindungen ein anderes visuelles Element verwenden möchten, können Sie eine benutzerdefinierte IConnectionPreviewer-Implementierung erstellen.

Bau und Entsorgung

Sie müssen einen Konstruktor und eine Entsorgungsmethode für Ihre IConnectionPreviewer

Der Konstruktor wird immer dann aufgerufen, wenn ein Ziehvorgang eines Blocks beginnt, und er wird an den Parameter das gezogen wird. Wenn Sie einen Status basierend auf dem können Sie dies im -Konstruktor tun.

class MyConnectionPreviewer implements IConnectionPreviewer {
  constructor(draggedBlock: Blockly.BlockSvg) {
    // Initialize state here.
  }
}

Die Methode dispose wird immer dann aufgerufen, wenn ein Ziehvorgang im Block endet. Bei Bedarf alle Status aufheben, wenn die IConnectionPreviewer-Instanz entsorgt wird, sollten Sie das hier tun.

dispose() {
  // Dispose of and dereference any state.
}

Vorschau erstellen

In IConnectionPreviewer muss eine Logik für die visuelle Vorschau implementiert werden Verbindungen.

Ersatz

Für eine Vorschau der Ersetzungen musst du die previewReplacement implementieren. .

previewReplacement(draggedConn, staticConn, replacedBlock) {
  // Visually indicate that the replacedBlock will be disconnected, and the
  // draggedConn will be connected to the staticConn.
}

Einfügen

Wenn Sie eine Vorschau von Einfügungen ansehen möchten, müssen Sie die Methode previewConnection implementieren.

previewConnection(draggedConn, staticConn) {
  // Visually indicate the draggedConn will be connected to the staticConn.
}

Wenn Sie eine andere Vorschau anzeigen möchten, je nachdem, oder zwischen Blöcken eingefügt wird, können Sie prüfen, ob staticConn gerade mit einer anderen Verbindung verbunden ist. Wenn staticConn gerade verbunden ist, wird draggedConn gerade verbunden. zwischen Blöcken eingefügt.

previewConnection(draggedConn, staticConn) {
  if (staticConn.targetConnection) {
    // The dragged block is being inserted between blocks.
  } else {
    // The dragged block is connecting to an empty input.
  }
}

CSS-Vorschauen

Sie können eine Vorschau der Verbindungen anzeigen, indem Sie CSS auf den Block anwenden. Beispiel: Der Parameter Das standardmäßige Ersetzungsüberblenden wird umgeschaltet, indem die CSS-Klasse blocklyReplaceable hinzugefügt wird an den Block zu richten.

previewReplacement(draggedConn, staticConn, replacedBlock) {
  Blockly.utils.dom.addClass(replacedblock.getSvgRoot(), 'my-custom-class');
}

Renderer-Vorschauen

Sie können eine Vorschau der Verbindungen anzeigen lassen, indem Sie einen benutzerdefinierten Renderer implementieren mit speziellen Vorschau-Hooks.

previewReplacement(draggedConn, staticConn, replacedBlock) {
  const renderer = replacedBlock.workspace.getRenderer()
  if (renderer.addReplacementIndicator) {
    renderer.addReplacementIndicator(replacedBlock);
  }
}

Vorschau ausblenden

Ihr IConnectionPreviewer muss Vorschauen ausblenden können. Diese wird aufgerufen, wenn der gezogene Block sich aus dem Bereich aller Verbindungen hinausbewegt, sodass keine Vorschau angezeigt werden soll. Es wird auch direkt vor dem Entfernen des Previewer aufgerufen.

hidePreview() {
  // Remove CSS classes, toggle renderer methods, etc.
}

Registrierung und Nutzung

Wenn Sie Ihr IConnectionPreviewer erstellt haben, um sie zu registrieren. Dadurch wird der Renderer mit einem String verknüpft, sodass und übergeben es an Ihre Injection-Konfiguration. Sie können auch die IConnectionPreviewer-Klasse (d.h. Konstruktor) direkt in Ihre Injection einfügen Konfiguration.

Blockly.registry.register(
  Blockly.registry.Type.CONNECTION_PREVIEWER,
  'MyConnectionPreviewer',
  MyConnectionPreviewer,
);

// You can use the string.
const myWorkspace = Blockly.inject({
  // options...
  plugins: {
    connectionPreviewer: 'myConnectionPreviewer',
  },
};

// Or you can pass the class / constructor directly.
const myWorkspace = Blockly.inject({
  // options...
  plugins: {
    connectionPreviewer: MyConnectionPreviewer,
  },
};

Weitere Informationen zur Registrierung findest du unter Abgeleitete Klassen einfügen.