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:
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
Đã đặt CLOCKWISE 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ố độ.
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)
.
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.
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à 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;
La bàn
0 độ là tăng, 90 độ là đúng.
Blockly.FieldAngle.CLOCKWISE = true;
Blockly.FieldAngle.OFFSET = 90;
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;
}
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.