يحتوي تطبيق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);