تجاهُل الرموز المضمَّنة

يحتوي تطبيقBlockly على ثلاثة أنواع من الرموز المضمنة: التعليقات والتحذيرات والعوامل المتغيرة.

يمكن إلغاء رموز التعليقات. هذا يعني أنّه يمكنك أن تطلب من Blockly إنشاء مثيل لفئة رمز التعليق الخاص بك عند استدعاء طرق مثل myBlock.setCommentText(). يمكنك القيام بذلك إذا كنت تريد مثلاً الفقاعة المنبثقة للتعليق أن تبدو مختلفة.

مجموعة مع تمييز رمز التعليق

لا يمكن التخلص من رمزي التحذير والتبديل.

رمز التعليق

لإلغاء رمز التعليق، عليك إنشاء رمز مخصّص ينفّذ واجهة ICommentIcon، ثم تسجيله.

التنفيذ الأساسي

قبل إضافة منطق خاص بالتعليق، أكمِل التنفيذ الأساسي للرمز المخصّص.

النوع

يجب أن تعرض الطريقة getType رمز التعليق IconType.

class MyCommentIcon extends Blockly.icons.Icon {
  getType() {
    return Blockly.icons.IconType.COMMENT;
  }
}

النص

تتطلّب واجهة ICommentIcon أن يحتوي التعليق على نص. يجب أن تعرض الطريقة getText نص التعليق. ويجب أن تحدّد الطريقة setText نص التعليق وأن تعدّل أي عناصر مرئية.

getText() {
  return this.text;
}

setText(text) {
  this.text = text;
  this.myRenderMethod();
}

فقاعة

يجب أن ينفِّذ رمز التعليق المخصّص واجهة IHasBubble لإتاحة إمكانية نشر التسلسل. حتى إذا لم يكن رمزك يحتوي على فقاعة من الناحية الفنية، يجب عليك تخزين معلومات مستوى الرؤية على الصف الخاص بك حتى يتم الاحتفاظ بالحالة المحفوظة. وإلا ستفقد المعلومات من المستخدم إذا قمت بتحميل عملية حفظ تتضمن ما إذا كان التعليق مفتوحًا أم لا.

bubbleIsVisible() {
  return this.bubbleVisible;
}

setBubbleVisible(visible: boolean) {
  this.bubbleVisible = visible;
}

لمزيد من المعلومات حول الفقاعات التفسيرية، يُرجى الاطّلاع على استخدام الفقاعات التفسيرية المنبثقة.

تتطلّب واجهة ICommentIcon أيضًا الطريقة getBubbleSize التي تعرض الحجم، والسمة setBubbleSize التي يتم ضبطها. ينطبق نفس السبب من وقت سابق من الحفظ حتى إذا لم يكن للأيقونة فقاعة من الناحية الفنية ينطبق هنا أيضًا.

getBubbleSize() {
  return this.bubbleSize;
}

setBubbleSize(size) {
  this.bubbleSize = size;
  this.myRenderMethod();
}

حفظ وتحميل

يجب أن ينفّذ رمز التعليق المخصّص الواجهة ISerializable. يجب أن تتوافق الحالة مع واجهة CommentState.

saveState() {
  return {
    text: this.text,
    pinned: this.bubbleVisible,
    height: this.bubbleSize.height,
    width: this.bubbleSize.width,
  }
}

loadState(state) {
  this.setText(state.text);
  this.setBubbleVisible(state.pinned);
  this.setBubbleSize(new Blockly.utils.Size(state.width, state.height));
}

لمزيد من المعلومات حول تسلسل الرموز، راجِع حفظ الرموز وتحميلها.

تسجيل

أخيرًا، تحتاج إلى تسجيل رمزك حتى يتمكن تطبيق Blockly من إنشاء مثيل له. واحرص على استخدام النوع IconTypes.COMMENT.

Blockly.icons.registry.register(Blockly.icons.IconType.COMMENT, myCommentIcon);