Blockly ช่วยให้คุณปรับแต่งฟังก์ชันการทำงานบางอย่างได้โดยการแทนที่คลาส Blockly ที่เกี่ยวข้อง
คลาสที่แทนที่ได้
คุณแทนที่คลาส Blockly ต่อไปนี้ได้
ชั้นเรียน Blockly | SDK โฆษณา B | ชื่อประเภทรีจิสทรี |
---|---|---|
Blockly.dragging.Dragger |
Blockly.IDragger |
blockDragger |
Blockly.ConnectionChecker |
Blockly.IConnectionChecker |
connectionChecker |
Blockly.InsertionMarkerPreviewer |
Blockly.IConnectionPreviewer |
connectionPreviewer |
Blockly.HorizontalFlyout |
Blockly.IFlyout |
flyoutsHorizontalToolbox |
Blockly.VerticalFlyout |
Blockly.IFlyout |
flyoutsVerticalToolbox |
Blockly.MetricsManager |
Blockly.IMetricsManager |
metricsManager |
Blockly.Toolbox |
Blockly.IToolbox |
toolbox |
Blockly.VariableMap |
Blockly.IVariableMap |
variableMap |
Blockly.VariableModel |
Blockly.IVariableModel |
-- |
ดูข้อมูลเกี่ยวกับวิธีแทนที่โปรแกรมแสดงผลได้ที่สร้างโปรแกรมแสดงผลที่กำหนดเอง
สร้างชั้นเรียนทดแทน
หากต้องการสร้างคลาสแทน ให้ใช้ฟังก์ชันในอินเทอร์เฟซที่เกี่ยวข้อง คุณสามารถใช้ฟังก์ชันทั้งหมดนี้ในคลาสใหม่ หรือขยายคลาส Blockly และลบล้างเฉพาะฟังก์ชันที่ต้องการเปลี่ยน ข้อกำหนดเพียงอย่างเดียวคือคุณ (หรือคลาสฐาน) ต้องใช้ฟังก์ชันทั้งหมดในอินเทอร์เฟซและปฏิบัติตามข้อกำหนดที่อธิบายไว้ในความคิดเห็นในอินเทอร์เฟซ
หากต้องการระบุให้เครื่องมือตรวจสอบประเภททราบว่าคุณใช้การติดตั้งใช้งานอินเทอร์เฟซที่เฉพาะเจาะจง ให้
ใส่คำอธิบายประกอบในคลาสด้วย@implements {InterfaceName}
แท็ก JSDoc (ใน
JavaScript) หรือคีย์เวิร์ด implements
(ใน TypeScript)
บอก Blockly เกี่ยวกับคลาสแทนที่
คุณบอก Blockly เกี่ยวกับคลาสแทนที่ได้ 2 วิธี ได้แก่ ลงทะเบียนเป็น
คลาสเริ่มต้นของประเภท (แนะนำ) หรือแทรกลงใน Blockly โดยใช้plugins
ตัวเลือกการกำหนดค่า
ลงทะเบียนคลาสแทนที่เป็นค่าเริ่มต้น
วิธีที่แนะนำในการบอก Blockly เกี่ยวกับคลาสการแทนที่คือการลงทะเบียนคลาสดังกล่าว
เป็นค่าเริ่มต้นสำหรับประเภทของคลาส โดยเรียกใช้ Blockly.registry.register
โดยใช้ชื่อ Blockly.registry.DEFAULT
และตั้งค่าพารามิเตอร์ opt_allowOverrides
เป็น true
Blockly.registry.register(
Blockly.registry.Type.VARIABLE_MODEL,
Blockly.registry.DEFAULT,
CustomVariableModel,
true,
);
แทรกคลาสแทนที่
นอกจากนี้ คุณยังแทรกคลาสแทนที่ได้โดยใช้plugins
ตัวเลือกการกำหนดค่า
ซึ่งเป็นออบเจ็กต์ที่ใช้ชื่อประเภทรีจิสทรีเป็นชื่อพร็อพเพอร์ตี้ และใช้คลาสการแทนที่หรือชื่อที่ลงทะเบียนเป็นค่าพร็อพเพอร์ตี้
(แม้ว่าplugins
ชื่อพร็อพเพอร์ตี้จะไม่จำเป็นต้องแพ็กเกจและจัดจำหน่ายผ่าน npm เหมือนกับปลั๊กอินที่ใช้ขยาย
Blockly)
ส่งชั้นเรียนทดแทนให้ Blockly.inject
โดยทำอย่างใดอย่างหนึ่งต่อไปนี้
Blockly.inject('blocklyDiv', {
plugins: {
'metricsManager': CustomMetricsManagerClass
}
}
หรือลงทะเบียนชั้นเรียนโดยใช้ Blockly.registry.register
และส่งชื่อที่ลงทะเบียนแล้วไปยัง Blockly.inject
ซึ่งจะมีประโยชน์หากคุณจัดเก็บตัวเลือกการกำหนดค่า
เป็น JSON ล้วน
Blockly.registry.register(Blockly.registry.Type.METRICS_MANAGER, 'YOUR_NAME', CustomMetricsManagerClass);
Blockly.inject('blocklyDiv', {
plugins: {
'metricsManager': 'YOUR_NAME'
}
}