שדות מספרים

שדה מספר שומר מספר בתור 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 אמור להמיר למספר. אחרת, ייעשה שימוש ב-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;
}