Pola kątów

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:

Pole kąta o wartości ROUND o wartości 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

Pole kąta z funkcją CLOCKWISE ustawioną na wartość true

Funkcja CLOCKWISE została ustawiona na false

Pole kąta z funkcją CLOCKWISE ustawioną 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.

Selektor kąta w punkcie 0 w prawo

Selektor kąta to 0 na górze

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).

Selektor kąta z wartością zawijania 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.

Selektor kąta z domyślnym rozmiarem edytora

Selektor kąta z dużym edytorem

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;

Selektor kąta skonfigurowany jako kątomierz

Kompas

0 stopni jest góra, 90 stopni jest prawidłowe.

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

Selektor kąta skonfigurowany jako kompas

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

Selektor kąta z walidatorem

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.