Trường góc

Trường góc lưu trữ một số làm giá trị và một chuỗi dưới dạng văn bản. Giá trị của thuộc tính này là một số từ 0 đến 360 (bạn có thể thay đổi phạm vi này), trong khi văn bản của thuộc tính này có thể là bất kỳ chuỗi nào được nhập vào trình chỉnh sửa.

Trường góc

Trường góc có trình chỉnh sửa

Trường góc thu gọn

dựa trên xu hướng

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

Hàm khởi tạo góc lấy một giá trị không bắt buộc và một validator không bắt buộc. Số 0 được dùng làm giá trị mặc định nếu không có giá trị nào được đưa ra hoặc giá trị đã cho không chuyển thành một số.

Chuyển đổi tuần tự

JSON

JSON cho trường góc sẽ có dạng như sau:

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

Trong đó FIELDNAME là một chuỗi tham chiếu đến một trường góc và giá trị này là giá trị áp dụng cho trường này. Giá trị này tuân theo các quy tắc tương tự như giá trị hàm khởi tạo.

XML

Mã XML cho trường góc sẽ có dạng như sau:

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

Trong đó thuộc tính name chứa một chuỗi tham chiếu đến một trường góc và văn bản bên trong là giá trị áp dụng cho trường đó. Giá trị văn bản bên trong tuân theo các quy tắc tương tự như giá trị hàm khởi tạo.

Tuỳ chỉnh

Chụp nhanh

Thuộc tính Blockly.FieldAngle.ROUND thay đổi giá trị mà bộ chọn góc "snaps" thành khi dùng chuột.

Dưới đây là một ví dụ có giá trị ROUND là 70:

Trường góc có giá trị ROUND là 70

Thuộc tính ROUND mặc định là 15. Đặt thành 0 nếu bạn muốn tắt tính năng chụp nhanh.

Đây là thuộc tính toàn cục, do đó, thuộc tính này sẽ sửa đổi tất cả các trường góc khi đặt.

Hướng đi

Thuộc tính Blockly.FieldAngle.CLOCKWISE thay đổi hướng khiến giá trị góc tăng lên. Việc đặt giá trị này thành true sẽ làm tăng góc khi bộ chọn được di chuyển theo chiều kim đồng hồ, việc đặt giá trị này thành false sẽ làm tăng góc khi được di chuyển ngược chiều kim đồng hồ.

Đã đặt CLOCKWISE thành true

Trường góc với CLOCKWISE được đặt thành true

Đã đặt CLOCKWISE thành false

Trường góc với CLOCKWISE được đặt thành false

Thuộc tính CLOCKWISE mặc định là false, nghĩa là chuyển động ngược chiều kim đồng hồ sẽ làm cho góc tăng lên.

Đây là thuộc tính toàn cục, do đó, thuộc tính này sẽ sửa đổi tất cả các trường góc khi đặt.

Vị trí số 0

Thuộc tính Blockly.FieldAngle.OFFSET đặt vị trí đặt vị trí 0 độ. Theo mặc định, 0 độ được căn chỉnh với trục x dương (về bên phải), sau đó thuộc tính này "chênh lệch" vị trí đó theo một số độ.

Bộ chọn góc bằng 0 ở bên phải

Bộ chọn góc bằng 0 ở trên cùng

Thuộc tính OFFSET mặc định là 0, nghĩa là 0 độ được căn chỉnh với trục x dương.

Đây là thuộc tính toàn cục nên sẽ sửa đổi tất cả các trường góc khi đặt.

Phạm vi

Thuộc tính Blockly.FieldAngle.WRAP đặt phạm vi giá trị. Phạm vi của các giá trị bằng (-360 + WRAP, WRAP). Điều này có nghĩa là giá trị WRAP là 360 sẽ cho phạm vi (0, 359.9) và giá trị WRAP là 180 sẽ cho phạm vi (-179.9, 180).

Bộ chọn góc có giá trị xuống dòng là 180

Theo mặc định, thuộc tính WRAP là 360, nghĩa là phạm vi của trường là (0, 359.9).

Đây là thuộc tính toàn cục nên sẽ sửa đổi tất cả các trường góc khi đặt.

Kích thước bộ chọn góc

Thuộc tính Blockly.FieldAngle.HALF thay đổi kích thước của bộ chọn góc. Giá trị này xác định bán kính của vòng tròn ngoài tính bằng pixel.

Bộ chọn góc có kích thước mặc định của trình chỉnh sửa

Bộ chọn góc có trình chỉnh sửa lớn

Giá trị mặc định của thuộc tính HALF là 50.

Đây là thuộc tính toàn cục nên sẽ sửa đổi tất cả các trường góc khi đặt.

Chế độ phổ biến

Bạn có thể sử dụng hướng vị trí 0 cùng nhau để tạo một số tổ hợp thú vị. Sau đây là hai lý do phổ biến:

Thước đo góc

0 độ là phải, 90 độ là tăng.

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

Bộ chọn góc được định cấu hình làm thước đo góc

La bàn

0 độ là tăng, 90 độ là đúng.

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

Bộ chọn góc được định cấu hình làm la bàn

Tạo trình xác thực góc

Giá trị của trường góc là một số, do đó, mọi trình xác thực đều phải chấp nhận một số và trả về một số, null hoặc undefined.

Dưới đây là ví dụ về một trình xác thực buộc giá trị phải là bội số của 30:

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

Bộ chọn góc có trình xác thực

Xin lưu ý cách thuộc tính [ROUND](#snapping) của trường góc vẫn được thiết lập thành 15. Vì vậy, các phần tử đồ hoạ của trường này hiển thị bội số của 15, thay vì 30.