Blockly memungkinkan Anda menyesuaikan fungsi tertentu dengan mengganti class Blockly yang sesuai.
Class yang dapat diganti
Class Blockly berikut dapat diganti:
Class Blockly | Antarmuka | Nama jenis registry |
---|---|---|
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 |
-- |
Untuk mengetahui informasi tentang cara mengganti perender, lihat Membuat perender kustom.
Membuat class pengganti
Untuk membuat class pengganti, terapkan fungsi di antarmuka yang sesuai. Anda dapat menerapkan semua fungsi ini di class baru, atau memperluas class Blockly dan hanya mengganti fungsi yang ingin Anda ubah. Satu-satunya persyaratan adalah Anda (atau class dasar) mengimplementasikan semua fungsi dalam antarmuka dan mematuhi persyaratan apa pun yang dijelaskan dalam komentar pada antarmuka.
Untuk menunjukkan kepada pemeriksa jenis bahwa Anda menerapkan antarmuka tertentu,
anotasikan class Anda dengan tag JSDoc @implements {InterfaceName}
(di
JavaScript) atau kata kunci implements
(di TypeScript).
Memberi tahu Blockly tentang class pengganti Anda
Ada dua cara untuk memberi tahu Blockly tentang class pengganti Anda: mendaftarkannya sebagai
class default dari jenisnya (lebih disarankan) atau menyuntikkannya menggunakan opsi konfigurasi plugins
.
Mendaftarkan class pengganti sebagai default
Cara yang lebih disukai untuk memberi tahu Blockly tentang class pengganti Anda adalah dengan mendaftarkannya
sebagai default untuk jenisnya. Untuk melakukannya, panggil Blockly.registry.register
menggunakan
nama Blockly.registry.DEFAULT
dan tetapkan parameter opt_allowOverrides
ke true
.
Blockly.registry.register(
Blockly.registry.Type.VARIABLE_MODEL,
Blockly.registry.DEFAULT,
CustomVariableModel,
true,
);
Menyuntikkan class pengganti
Anda juga dapat menyuntikkan class pengganti menggunakan opsi
konfigurasi plugins
.
Ini adalah objek yang menggunakan nama jenis pendaftaran sebagai
nama properti dan class pengganti atau nama terdaftar sebagai nilai properti.
(Terlepas dari nama properti plugins
, class Anda tidak perlu
dikemas dan didistribusikan melalui npm seperti plugin yang digunakan untuk memperluas
Blockly.)
Teruskan class pengganti Anda ke Blockly.inject
:
Blockly.inject('blocklyDiv', {
plugins: {
'metricsManager': CustomMetricsManagerClass
}
}
Atau, daftarkan class Anda menggunakan Blockly.registry.register
dan teruskan nama yang terdaftar ke Blockly.inject
. Hal ini berguna jika Anda menyimpan opsi konfigurasi
sebagai JSON murni.
Blockly.registry.register(Blockly.registry.Type.METRICS_MANAGER, 'YOUR_NAME', CustomMetricsManagerClass);
Blockly.inject('blocklyDiv', {
plugins: {
'metricsManager': 'YOUR_NAME'
}
}