توسيع حقل حالي
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
من أجل توسيع أحد الحقول الموجودة، يجب عليك فئة فرعية حقل مدمج (على سبيل المثال
FieldTextInput
وFieldColour
) ثم عدِّل جزءًا منها ليلائم احتياجاتك.
في ما يلي بعض أجزاء الحقل التي يمكنك تعديلها:
إذا كنت ترغب في إنشاء
حقل مخصّص
لا يحتاج إلى سلوك من أي حقل مضمّن، ويجب أن تكون الفئة الفرعية Field
عليه.
الإضافات الشائعة
تقوم معظم الحقول المخصصة بتوسيع أحد هذه الأنواع الثلاثة:
- إدخال النص: إذا كنت تريد أن يكتب المستخدمون في الحقل، يجب عليك توسيع
FieldTextInput
- رقم: إذا أردت تخزين رقم، عليك تمديد الرقم
FieldNumber
.
- قائمة منسدلة: إذا أردت إنشاء قائمة منسدلة، ولكنّك تريد الاحتفاظ بنموذج مختلف
مقارنةً بالسلسلة التلقائية أو نموذج الصورة التلقائي، يجب تمديد مهلة
FieldDropdown
.
- تحذير: قبل تمديد الفترة
FieldDropdown
، تأكَّد من أنّ حقل القائمة المنسدلة
لا يمكن لخيارات التخصيص تلبية احتياجاتك.
في حالات معينة، قد تريد توسيع نوع حقل مختلف. بالنسبة
مثال FieldLabelSerializable
يمتد إلى FieldLabel
.
التصنيف الفرعي
import * as Blockly from 'blockly';
export class MyCustomTextField extends Blockly.FieldTextInput {
constructor(value, validator, config) {
super(value, validator, config);
}
}
تشبه الدالة الإنشائية للفئة الفرعية لأحد الحقول إلى حد كبير دالة إنشائية
حقلاً مخصصًا. يجب أن يكون توقيع الدالة الإنشائية الفرعية
بشكل عام توقيع الدالة الإنشائية الفائقة.
JSON والتسجيل
يجب عليك أيضًا تسجيل الحقل مرة واحدة:
Blockly.fieldRegistry.register('my_custom_text_field', MyCustomTextField);
وتقديم تنفيذ للدالة fromJson
في الفئة حتى تعمل مع
تنسيق JSON:
static fromJson(options) {
const value = Blockly.utils.parsing.replaceMessageReferences(options.value);
return new MySubclassName(value);
}
لمزيد من المعلومات حول تسجيل حقل، راجِع ملف JSON والتسجيل.
في إنشاء حقل مخصص.
إنّ محتوى هذه الصفحة مرخّص بموجب ترخيص Creative Commons Attribution 4.0 ما لم يُنصّ على خلاف ذلك، ونماذج الرموز مرخّصة بموجب ترخيص Apache 2.0. للاطّلاع على التفاصيل، يُرجى مراجعة سياسات موقع Google Developers. إنّ Java هي علامة تجارية مسجَّلة لشركة Oracle و/أو شركائها التابعين.
تاريخ التعديل الأخير: 2025-04-14 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-04-14 (حسب التوقيت العالمي المتفَّق عليه)"],[[["To extend an existing Blockly field, subclass a built-in field like `FieldTextInput` or `FieldColour` and modify its editor, on-block display, or displayed text."],["For custom fields with unique behaviors, subclass the base `Field` class instead of extending an existing field."],["Common field extensions involve customizing text input (`FieldTextInput`), numbers (`FieldNumber`), or dropdowns (`FieldDropdown`) to meet specific needs."],["When subclassing, ensure your constructor matches the super-constructor's signature and register the field with `Blockly.fieldRegistry.register`."],["Implement the `fromJson` method in your custom field class to enable compatibility with the Blockly JSON format for serialization and deserialization."]]],["To extend an existing field, subclass a built-in field like `FieldTextInput` or `FieldColour`, modifying its editor, on-block display, or text. For unique fields, subclass `Field`. Common extensions include `FieldTextInput`, `FieldNumber`, and `FieldDropdown`. Subclass constructors should mirror the super-constructor's signature. Register the field using `Blockly.fieldRegistry.register()` and implement `fromJson` for JSON compatibility. Extending different fields such as `FieldLabelSerializable` is also possible.\n"]]