Campi relativi agli angoli

Il campo relativo all'angolo memorizza un numero come valore e una stringa come testo. Il suo valore è un numero compreso tra 0 e 360 (questo intervallo può essere modificato), mentre il testo può essere una qualsiasi stringa inserita nell'editor.

Campo Angolo

Campo angolo con editor

Campo dell'angolo compresso

Creazione

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');
  }
};

Il costruttore dell'angolo riceve un valore facoltativo e uno validator facoltativo. Zero viene utilizzato come valore predefinito se non viene specificato alcun valore o se il valore specificato non viene trasmesso a un numero.

Serializzazione

JSON

Il codice JSON per un campo angolare ha il seguente aspetto:

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

Dove FIELDNAME è una stringa che fa riferimento a un campo angolo e il valore è il valore da applicare al campo. Il valore segue le stesse regole del valore del costruttore.

XML

L'XML per un campo angolare ha il seguente aspetto:

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

In cui l'attributo name contiene una stringa che fa riferimento a un campo angolare e il testo interno è il valore da applicare al campo. Il valore del testo interno segue le stesse regole del valore del costruttore.

Funzionalità di

Ancoraggio

La proprietà Blockly.FieldAngle.ROUND cambia i valori a cui il selettore angolare si scatta quando si usa un mouse.

Ecco un esempio con un valore ROUND pari a 70:

Campo Angolo con valore ROUND di 70

Il valore predefinito della proprietà ROUND è 15. Impostalo su 0 se vuoi disabilitare l'agganciamento.

Si tratta di una proprietà globale, pertanto, se impostata, modificherà tutti i campi relativi agli angoli.

Senso di marcia

La proprietà Blockly.FieldAngle.CLOCKWISE cambia la direzione in cui il valore dell'angolo aumenta. Se questo valore viene impostato su true, l'angolo aumenta quando il selettore viene spostato in senso orario, mentre l'impostazione su false aumenta l'angolo quando viene spostato in senso antiorario.

SENSO OROLOGIO impostato su true

Campo dell&#39;angolo con OROLOGIO impostato su true

SENSO OROLOGIO impostato su false

Campo dell&#39;angolo con OROLOGIO impostato su false

Il valore predefinito della proprietà CLOCKWISE è false, il che significa che il movimento in senso antiorario farà aumentare l'angolo.

Si tratta di una proprietà globale, pertanto, se impostata, modificherà tutti i campi relativi agli angoli.

Posizione zero

La proprietà Blockly.FieldAngle.OFFSET imposta la posizione di 0 gradi. Per impostazione predefinita, zero gradi sono allineati con l'asse x positivo (verso destra) e poi questa proprietà "offset" questa posizione di un numero di gradi.

Selettore angolo zero a destra

Selettore angolo zero in alto

Il valore predefinito della proprietà OFFSET è 0, il che significa che zero gradi è allineato con l'asse x positivo.

Si tratta di una proprietà globale, quindi modificherà tutti i campi relativi agli angoli, se impostati.

Intervallo

La proprietà Blockly.FieldAngle.WRAP imposta l'intervallo di valori. L'intervallo di valori è uguale a (-360 + WRAP, WRAP). Ciò significa che un valore WRAP di 360 fornirà un intervallo di (0, 359.9) e un valore di WRAP di 180 fornirà un intervallo di (-179.9, 180).

Selettore angolare con valore a capo pari a 180

Per impostazione predefinita, la proprietà WRAP è 360, il che significa che l'intervallo del campo è (0, 359.9).

Si tratta di una proprietà globale, quindi modificherà tutti i campi relativi agli angoli, se impostati.

Dimensioni selettore angolo

La proprietà Blockly.FieldAngle.HALF modifica le dimensioni del selettore angolare. Questo valore definisce il raggio del cerchio esterno in pixel.

Selettore angolo con dimensioni predefinite dell&#39;editor

Selettore angolare con editor grande

Il valore predefinito della proprietà HALF è 50.

Si tratta di una proprietà globale, quindi modificherà tutti i campi relativi agli angoli, se impostati.

Modalità comuni

La direzione e la posizione zero possono essere utilizzate insieme per creare alcune combinazioni divertenti. Di seguito sono riportati due esempi comuni:

Goniometro

0 gradi sono corretti, 90 gradi in alto.

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

Selettore dell&#39;angolo configurato come goniometro

Bussola

0 gradi sono in alto, 90 gradi sono corretti.

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

Selettore dell&#39;angolo configurato come bussola

Creazione di uno strumento di convalida degli angoli

Il valore di un campo angolo è un numero, quindi qualsiasi convalidatore deve accettare un numero e restituire un numero, null o undefined.

Ecco un esempio di uno strumento di convalida che forza il valore a essere un multiplo di 30:

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

Selettore angolare con strumento di convalida

Nota che la proprietà [ROUND](#snapping) del campo dell'angolo è ancora impostata su 15, pertanto gli elementi grafici del campo mostrano multipli di 15, invece di 30.