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:
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
UHRZEIGERSINN auf „falsch“ festgelegt
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.
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.
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.
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;
Kompass
0 Grad ist oben, 90 Grad ist richtig.
Blockly.FieldAngle.CLOCKWISE = true;
Blockly.FieldAngle.OFFSET = 90;
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;
}
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.