Pole kąta zawiera liczbę jako wartość, a ciąg znaków jako tekst. Jego wartością jest liczba od 0 do 360 (ten zakres można zmieniać), a tekstem może być dowolny ciąg wpisany w edytorze.
Pole kąta
Pole kąta w edytorze
Pole kąta zwiniętego
na podstawie trendów
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');
}
};
Konstruktor kątów przyjmuje wartość opcjonalną i opcjonalny validator. Jeśli nie podano żadnej wartości lub dana wartość nie jest rzutowana na liczbę, domyślną wartością jest 0.
Serializacja
JSON
Kod JSON pola kąta wygląda tak:
{
"fields": {
"FIELDNAME": 0
}
}
Gdzie FIELDNAME
to ciąg znaków odwołujący się do pola kąta, a wartość to wartość do zastosowania do pola. Wartość podlega tym samym regułom co wartość konstruktora.
XML
Kod XML pola kąta wygląda tak:
<field name="FIELDNAME">0</field>
Gdzie atrybut name
zawiera ciąg znaków odwołujący się do pola kąta, a tekst wewnętrzny to wartość do zastosowania do pola. Wewnętrzna wartość tekstowa podlega tym samym regułom co wartość konstruktora.
Personalizacja
Przyciąganie
Właściwość Blockly.FieldAngle.ROUND
zmienia wartość, jaką ma wartość „przyciąganie” selektora kąta, gdy użytkownik korzysta z myszy.
Oto przykład z wartością ROUND
równą 70:
Właściwość ROUND
przyjmuje domyślnie wartość 15. Aby wyłączyć przyciąganie, ustaw go na 0.
Jest to właściwość globalna, więc po ustawieniu zmienia wszystkie pola kątów.
Dozwolone kierunki jazdy
Właściwość Blockly.FieldAngle.CLOCKWISE
zmienia kierunek, w którym następuje wzrost wartości kąta. Ustawienie tej wartości na true
zwiększa kąt przy przesuwaniu selektora w prawo, natomiast ustawienie na false
zwiększa kąt przy przesuwaniu w lewo.
Funkcja CLOCKWISE ma wartość Prawda
Funkcja CLOCKWISE została ustawiona na false
Właściwość CLOCKWISE
przyjmuje domyślnie wartość false
, co oznacza, że ruch w lewo powoduje zwiększenie kąta.
Jest to właściwość globalna, więc po ustawieniu zmienia wszystkie pola kątów.
Pozycja zerowa
Właściwość Blockly.FieldAngle.OFFSET
określa, gdzie znajduje się 0 stopni. Domyślnie 0 stopni jest wyrównane z dodatnią osią X (w prawo), a właściwość „przesunie” tę pozycję o określoną liczbę stopni.
Właściwość OFFSET
przyjmuje domyślnie wartość 0, co oznacza, że 0 stopni jest wyrównane względem dodatniej osi X.
Jest to właściwość globalna, która po ustawieniu modyfikuje wszystkie pola kątów.
Zakres
Właściwość Blockly.FieldAngle.WRAP
określa zakres wartości.
Zakres wartości jest równy (-360 + WRAP, WRAP)
. Oznacza to, że wartość WRAP
o wartości 360 oznacza zakres (0, 359.9)
, a wartość WRAP
równa 180 daje zakres (-179.9, 180)
.
Właściwość WRAP
przyjmuje domyślnie wartość 360, co oznacza, że zakres pola to (0,
359.9)
.
Jest to właściwość globalna, która po ustawieniu modyfikuje wszystkie pola kątów.
Rozmiar selektora kąta
Właściwość Blockly.FieldAngle.HALF
zmienia rozmiar selektora kąta. Ta wartość określa promień zewnętrznego okręgu w pikselach.
Wartość domyślna parametru HALF
to 50.
Jest to właściwość globalna, która po ustawieniu modyfikuje wszystkie pola kątów.
Tryby wspólne
Kierunek i pozycja zerowa można wykorzystać razem, by stworzyć ciekawe kombinacje. Oto 2 najczęstsze z nich:
Kątomierz
0 stopni jest prawidłowe, 90 stopni w górę.
Blockly.FieldAngle.CLOCKWISE = false;
Blockly.FieldAngle.OFFSET = 0;
Kompas
0 stopni jest góra, 90 stopni jest prawidłowe.
Blockly.FieldAngle.CLOCKWISE = true;
Blockly.FieldAngle.OFFSET = 90;
Tworzenie walidatora kąta
Wartość pola kąta jest liczbą, więc każdy walidator musi zaakceptować liczbę i zwrócić liczbę, null
lub undefined
.
Oto przykład walidatora, który wymusza, by wartość była wielokrotnością liczby 30:
function(newValue) {
return Math.round(newValue / 30) * 30;
}
Zwróć uwagę, że właściwość [ROUND](#snapping)
pola kąta nadal jest ustawiona na 15, więc elementy graficzne tego pola wyświetlają wielokrotność liczby 15, a nie 30.