Winkelfelder

In einem Winkelfeld wird eine Zahl als Wert und ein String als Text gespeichert. Der Wert ist eine Zahl zwischen 0 und 360. Dieser Bereich kann geändert werden. Der Text kann ein beliebiger String sein, der in den Editor eingegeben wird.

Winkelfeld

Winkelfeld mit Editor

Minimiertes Winkelfeld

Erstellung

JSON

{
  "type": "example_angle",
  "message0": "angle: %1",
  "args0": [
    {
      "type": "field_angle",
      "name": "FIELDNAME",
      "angle": 90
    }
  ]
}

JavaScript

Blockly.Blocks['example_angle'] = {
  init: function() {
    this.appendDummyInput()
        .appendField('angle:')
        .appendField(new Blockly.FieldAngle(90), 'FIELDNAME');
  }
};

Der Winkelkonstruktor übernimmt einen optionalen Wert und einen optionalen validator. Null wird als Standardwert verwendet, wenn kein Wert angegeben wird oder der angegebene Wert nicht in eine Zahl umgewandelt wird.

Serialisierung

JSON

Der JSON-Code für ein Winkelfeld sieht so aus:

{
  "fields": {
    "FIELDNAME": 0
  }
}

Dabei ist FIELDNAME ein String, der auf ein Winkelfeld verweist, und der Wert ist der Wert, der auf das Feld angewendet werden soll. Der Wert folgt denselben Regeln wie der Konstruktorwert.

XML

Der XML-Code für ein Winkelfeld sieht so aus:

<field name="FIELDNAME">0</field>

Dabei enthält das Attribut name einen String, der auf ein Winkelfeld verweist, und der innere Text ist der Wert, der auf das Feld angewendet werden soll. Der innere Textwert folgt denselben Regeln wie der Konstruktorwert.

Anpassbare

Andocken

Mit der Eigenschaft Blockly.FieldAngle.ROUND wird festgelegt, auf welche Werte die Winkelauswahl bei Verwendung einer Maus angedockt wird.

Hier ist ein Beispiel mit einem ROUND-Wert von 70:

Winkelfeld mit einem ROUND-Wert von 70

Der Standardwert für die Eigenschaft ROUND ist 15. Legen Sie den Wert auf 0 fest, wenn Sie das Andocken deaktivieren möchten.

Da dies eine globale Eigenschaft ist, werden alle Winkelfelder geändert, wenn sie festgelegt wird.

Verkehrsrichtung

Das Attribut Blockly.FieldAngle.CLOCKWISE ändert die Richtung, in der der Winkelwert erhöht wird. Wenn Sie diesen Wert auf true setzen, erhöht sich der Winkel, wenn der Selektor im Uhrzeigersinn bewegt wird. Wenn Sie ihn auf false setzen, erhöht sich der Winkel, wenn er gegen den Uhrzeigersinn verschoben wird.

IM UHRZEIGERSINN auf "true" festgelegt

Winkelfeld mit der Einstellung IM UHRZEIGERSINN auf &quot;true&quot;

UHRZEIGERSINN auf „falsch“ festgelegt

Winkelfeld mit der Einstellung IM UHRZEIGERSINN auf &quot;falsch&quot;

Die Eigenschaft CLOCKWISE ist standardmäßig auf false gesetzt, d. h. bei einer Bewegung gegen den Uhrzeigersinn wird der Winkel erhöht.

Da dies eine globale Eigenschaft ist, werden alle Winkelfelder geändert, wenn sie festgelegt wird.

Null-Position

Mit der Eigenschaft Blockly.FieldAngle.OFFSET wird festgelegt, wo sich 0 Grad befindet. Standardmäßig ist 0 Grad an der positiven x-Achse (rechts) ausgerichtet. Diese Eigenschaft „versetzt“ diese Position dann um eine Anzahl von Grad.

Winkelauswahl „0“ rechts

Winkelauswahl – Null oben

Die Eigenschaft OFFSET ist standardmäßig auf 0 gesetzt, d. h., 0 Grad ist an der positiven x-Achse ausgerichtet.

Da dies eine globale Eigenschaft ist, werden alle Winkelfelder geändert, wenn sie festgelegt wird.

Bereich

Mit der Eigenschaft Blockly.FieldAngle.WRAP wird der Wertebereich festgelegt. Der Wertebereich ist gleich (-360 + WRAP, WRAP). Das bedeutet, dass ein WRAP-Wert von 360 einen Bereich von (0, 359.9) und ein WRAP-Wert von 180 einen Bereich von (-179.9, 180) ergibt.

Winkelauswahl mit Umbruchwert 180

Die Standardeinstellung für die Eigenschaft WRAP ist 360. Der Bereich des Felds ist also (0, 359.9).

Da dies eine globale Eigenschaft ist, werden alle Winkelfelder geändert, wenn sie festgelegt wird.

Größe für Winkelauswahl

Das Attribut Blockly.FieldAngle.HALF ändert die Größe der Winkelauswahl. Dieser Wert definiert den Radius des äußeren Kreises in Pixeln.

Winkelauswahl mit standardmäßiger Editorgröße

Winkelauswahl mit großem Editor

Der Standardwert für das Attribut HALF ist 50.

Da dies eine globale Eigenschaft ist, werden alle Winkelfelder geändert, wenn sie festgelegt wird.

Allgemeine Modi

Die Richtung und die Nullposition können zusammen verwendet werden, um unterhaltsame Kombinationen zu erstellen. Hier sind zwei häufige Fragen:

Winkelmesser

0 Grad ist rechts, 90 Grad oben.

Blockly.FieldAngle.CLOCKWISE = false;
Blockly.FieldAngle.OFFSET = 0;

Winkelauswahl, die als Winkelauswahl konfiguriert ist

Kompass

0 Grad ist oben, 90 Grad ist richtig.

Blockly.FieldAngle.CLOCKWISE = true;
Blockly.FieldAngle.OFFSET = 90;

Winkelauswahl, die als Kompass konfiguriert ist

Winkelvalidierung erstellen

Der Wert eines Winkelfelds ist eine Zahl. Daher müssen Validierungen eine Zahl akzeptieren und eine Zahl, null oder undefined, zurückgeben.

Hier ist ein Beispiel für eine Validierung, die den Wert auf ein Vielfaches von 30 erzwingt:

function(newValue) {
    return Math.round(newValue / 30) * 30;
}

Winkelauswahl mit Validator

Beachten Sie, dass die [ROUND](#snapping)-Eigenschaft des Winkelfelds immer noch auf 15 festgelegt ist, sodass die grafischen Elemente des Feldes ein Vielfaches von 15 statt 30 anzeigen.