角度フィールド

angle フィールドには値として数値が格納され、テキストとして文字列が格納されます。値は 0 ~ 360 の数値(この範囲は変更できます)で、テキストにはエディタに入力する任意の文字列を指定できます。

角度フィールド

エディターのある角度フィールド

折りたたまれた角度のフィールド

動画を作成

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

角度コンストラクタは、オプションの値とオプションのvalidatorを受け取ります。値が指定されていない場合や指定された値が数値にキャストされない場合は、ゼロがデフォルト値として使用されます。

シリアル化

JSON

angle フィールドの JSON は次のようになります。

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

ここで、FIELDNAME は角度フィールドを参照する文字列で、値はフィールドに適用する値です。この値は、コンストラクタの値と同じルールに従います。

XML

angle フィールドの XML は次のようになります。

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

ここで、name 属性には角度フィールドを参照する文字列が含まれ、内側のテキストはフィールドに適用する値です。内部テキストの値はコンストラクタの値と同じルールに従います。

カスタマイズ

スナップ

Blockly.FieldAngle.ROUND プロパティは、マウス使用時に角度選択ツールがスナップする値を変更します。

ROUND 値が 70 の例を以下に示します。

ROUND 値が 70 の角度フィールド

ROUND プロパティはデフォルトで 15 に設定されています。スナップを無効にするには、0 に設定します。

これはグローバル プロパティであるため、設定するとすべての角度フィールドが変更されます。

方向

Blockly.FieldAngle.CLOCKWISE プロパティは、角度値を増加させる方向を変更します。この値を true に設定すると、セレクタが時計回りに動くにつれて角度が広がり、false に設定すると、反時計回りに動くときに角度が大きくなります。

CLOCKWISE が true に設定されている

CLOCKWISE が true に設定された角度フィールド

CLOCKWISE が false に設定されている

CLOCKWISE が false に設定された角度フィールド

CLOCKWISE プロパティのデフォルトは false で、反時計回りに動かすと角度が広がります。

これはグローバル プロパティであるため、設定するとすべての角度フィールドが変更されます。

ゼロ位置

Blockly.FieldAngle.OFFSET プロパティは、0 度がどこになるかを設定します。デフォルトでは、0 度は正の X 軸(右向き)に整列され、このプロパティによってその位置を一定数だけ「オフセット」されます。

右の角度ピッカー

上部の角度ピッカー

OFFSET プロパティのデフォルトは 0 です。つまり、0 度は正の x 軸に揃えられます。

これはグローバル プロパティであるため、設定するとすべての角度フィールドが変更されます。

範囲

Blockly.FieldAngle.WRAP プロパティは、値の範囲を設定します。値の範囲は (-360 + WRAP, WRAP) です。つまり、WRAP の値が 360 の場合は (0, 359.9) の範囲、WRAP 値が 180 の場合は (-179.9, 180) の範囲になります。

ラップ値が 180 の角度選択ツール

WRAP プロパティのデフォルトは 360 で、フィールドの範囲は (0, 359.9) です。

これはグローバル プロパティであるため、設定するとすべての角度フィールドが変更されます。

角度選択ツールのサイズ

Blockly.FieldAngle.HALF プロパティは、角度選択ツールのサイズを変更します。この値は、外側の円の半径をピクセル単位で定義します。

デフォルトのエディタ サイズの角度選択ツール

大きなエディタの角度選択ツール

HALF プロパティはデフォルトで 50 に設定されます。

これはグローバル プロパティであるため、設定するとすべての角度フィールドが変更されます。

共通モード

方向 ゼロ位置を組み合わせて、魅力的な組み合わせを作成できます。その一般的な原因を 2 つ挙げます。

分度器

0 度は右、90 度は上です。

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

分度器として設定された角度選択ツール

コンパス

0 度が上、90 度が右です。

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

コンパスとして設定された角度選択ツール

角度バリデータを作成する

角度フィールドの値は数値であるため、バリデータはすべて数値を受け取って、数値、null、または undefined を返す必要があります。

次に、値を 30 の倍数に強制するバリデータの例を示します。

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

バリデータを備えた角度選択ツール

角度フィールドの [ROUND](#snapping) プロパティは 15 に設定されているため、フィールドのグラフィック要素には 30 ではなく 15 の倍数が表示されます。