שדה מספר שומר מספר בתור value
שלו, ומחרוזת בתור text
שלו. הערך value
הוא תמיד מספר חוקי, בהתאם לאילוצים שהוגדרו לשדה בזמן היצירה. הטקסט שלו יכול להיות כל מחרוזת שהוזנה בכלי העריכה.
שדה למספר
שדה מספר עם עורך פתוח
שדה מספר בבלוק מכווץ
יצירה
JSON
{
"type": "example_number",
"message0": "number: %1",
"args0": [
{
"type": "field_number",
"name": "FIELDNAME",
"value": 100,
"min": 0,
"max": 100,
"precision": 10
}
]
}
JavaScript
Blockly.Blocks['example_number'] = {
init: function() {
this.appendDummyInput()
.appendField("number:")
.appendField(new Blockly.FieldNumber(100, 0, 100, 10), 'FIELDNAME');
}
};
בנאי המספר מקבל את הדברים הבאים:
- שדה
value
אופציונלי - ערך אופציונלי של min
- ערך מקסימלי אופציונלי
- אפשרות לרמת דיוק
- validator אופציונלי
ה-value
אמור להמיר למספר. אחרת, ייעשה שימוש ב-0.
עריכה טורית
JSON
ה-JSON של שדה מספר נראה כך:
{
"fields": {
"FIELDNAME": 0
}
}
כאשר FIELDNAME
הוא מחרוזת שמפנה לשדה מספר, והערך הוא הערך שיש להחיל על השדה. הערך פועל לפי אותם כללים כמו הערך של ה-constructor.
XML
קוד ה-XML של שדה מספר נראה כך:
<field name="FIELDNAME">0</field>
המאפיין name
של הצומת field
מכיל מחרוזת שמפנה לשדה
מספר, והסמל text
הפנימי של הצומת הוא value
שצריך להחיל על השדה. ערך הטקסט הפנימי תואם לאותם הכללים כמו הערך של ה-constructor.
מגבלות
אפשר להגדיר מגבלות דרך הגדרת השדה, או באמצעות הפונקציה setConstraints.
הגעת לערך המינימלי
הערך של min
קובע את הערך הקטן ביותר/השלילי ביותר שמותר לשדה.
הגעת לערך המקסימלי
הערך של max
קובע את הערך החיובי הגדול ביותר או החיובי ביותר שמותר לשדה.
עיגול
הפונקציה precision
מעגלת את הערך לכפולה הקרובה ביותר של הדיוק. אפשר להשתמש בו כדי לגרום לשדה לקבל רק כפולות של .01, 10, 42 וכו'.
מגבלות נפוצות
מספרים חיוביים
כדי לאלץ את השדה לקבל רק מספרים חיוביים, מגדירים את הערך של min
כ-1.
מספרים שלמים
כדי לאלץ את השדה לקבל מספרים שלמים בלבד, צריך להגדיר את precision
ל-1.
יצירת מאמת מספרים
הערך של שדה מספר הוא מספר, ולכן כל מאמת צריך לקבל number
ולהחזיר number
, null
או undefined
.
זאת דוגמה לכלי תיקוף שמשנה את הערך ל-0 או ל-1 בהתאם לערך הזה אם הערך היה אי-זוגי או זוגי.
function(newValue) {
return newValue % 2;
}