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

يتضمن 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 من واجهة pyplot. يجب أن تتوافق الولاية مع CommentState. من واجهة pyplot.

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);