يتضمن 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);