Zahlenfelder

In einem Zahlenfeld wird eine Zahl als value und ein String als text gespeichert. Die value ist immer eine gültige Zahl, wie in den Einschränkungen definiert, die dem Feld bei der Erstellung zugewiesen wurden. Der Text kann ein beliebiger String sein, der in den Editor eingegeben wird.

Zahlenfeld

Ein Block mit dem Label „number:“ und einem Zahlenfeld, das auf 100 festgelegt ist.

Zahlenfeld mit geöffnetem Editor

Derselbe Block mit dem Feld, das bearbeitet wird.

Zahlenfeld in minimiertem Block

Derselbe Block nach dem Minimieren. Er trägt das Label „number: 100“ und hat einen gezackten rechten Rand, um anzuzeigen, dass er minimiert ist.

Erstellung

JSON

{
  "type": "example_number",
  "message0": "number: %1",
  "args0": [
    {
      "type": "field_number",
      "name": "FIELDNAME",
      "value": 100,
      "min": 0,
      "max": 100,
      "precision": 10
    }
  ]
}

JavaScript

Blockly.Blocks['example_number'] = {
  init: function() {
    this.appendDummyInput()
        .appendField("number:")
        .appendField(new Blockly.FieldNumber(100, 0, 100, 10), 'FIELDNAME');
  }
};

Der Konstruktor für Zahlen akzeptiert Folgendes:

value sollte in eine Zahl umgewandelt werden. Andernfalls wird „0“ verwendet.

Serialisierung

JSON

Das JSON für ein Zahlenfeld sieht so aus:

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

Dabei ist FIELDNAME ein String, der auf ein Zahlenfeld verweist, und „Wert“ ist der Wert, der auf das Feld angewendet werden soll. Für den Wert gelten dieselben Regeln wie für den Konstruktorwert.

XML

Die XML-Datei für ein Zahlenfeld sieht so aus:

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

Das name-Attribut des field-Knotens enthält einen String, der auf ein Zahlenfeld verweist, und die innere text des Knotens ist die value, die auf das Feld angewendet werden soll. Für den inneren Textwert gelten dieselben Regeln wie für den Konstruktorwert.

Einschränkungen

Einschränkungen können in der Felddefinition oder mit der Funktion setConstraints festgelegt werden.

Mindestwert

Mit dem min-Wert wird der kleinste/negativste Wert festgelegt, den das Feld enthalten darf.

Höchstwert

Mit dem Wert max wird der größte/positivste Wert festgelegt, den das Feld enthalten darf.

Rundung

Mit precision wird der Wert auf das nächste Vielfache der Genauigkeit gerundet. So können Sie festlegen, dass im Feld nur ein Vielfaches von 0,01, 10, 42 usw .zulässig ist.

Gängige Einschränkungen

Positive Zahlen

Wenn in Ihrem Feld nur positive Zahlen zulässig sein sollen, setzen Sie den Wert für min auf 1.

Ganzzahlen

Wenn in Ihrem Feld nur Ganzzahlen zulässig sein sollen, setzen Sie precision auf 1.

Zahlüberprüfung erstellen

Der Wert eines Zahlenfelds ist eine Zahl. Alle Validatoren müssen also eine number akzeptieren und eine number, null oder undefined zurückgeben.

Hier ein Beispiel für einen Validator, der den Wert in 0 oder 1 ändert, je nachdem, ob der Wert gerade oder ungerade ist.

function(newValue) {
  return newValue % 2;
}

Ein animiertes GIF, das den Validator bei der Arbeit zeigt. Wenn der Nutzer „10“ eingibt und woanders klickt, wird das Feld auf „0“ gesetzt. Wenn der Nutzer „11“ eingibt und woanders klickt, wird das Feld auf „1“ gesetzt.