Beberapa ikon memiliki status yang perlu disimpan, sementara yang lain dibuat instance-nya berdasarkan status yang sudah ada. Misalnya, ikon komentar perlu menyimpan teks, sedangkan ikon peringatan tidak dipakai karena mereka dibuat instance-nya berdasarkan cara blok terhubung.
Jika ikon Anda perlu menyimpan statusnya, Anda perlu mengimplementasikan
ISerializable
dan daftarkan
ikon.
Status yang ditampilkan oleh ikon Anda disertakan dalam properti icons
status blok:
{
'blocks': {
'languageVersion': 0,
'blocks': [
{
'type': 'my_block',
'icons': {
// Your state goes here!
'my_icon': 'some state',
}
}
]
}
}
Menyimpan status
Untuk menyimpan status ikon, Anda harus mengimplementasikan
Metode saveState
dari ISerializable
dalam antarmuka berbasis web
yang sederhana. Metode ini dapat menampilkan json arbitrer, yang diteruskan ke
Metode loadState
.
saveState() {
return this.state; // Some arbirtary JSON-compatible data.
}
Serialisasi lengkap dan data cadangan
saveState
juga menerima parameter doFullSerialization
opsional. Ini adalah
digunakan oleh ikon yang mereferensikan
status yang diserialisasi oleh
serializer (seperti model data pendukung). Parameter tersebut menandakan bahwa
status yang direferensikan tidak akan tersedia ketika blok dideserialisasi, sehingga
seharusnya menserialisasi semua status pendukung itu sendiri. Misalnya, ini benar
ketika blok individual diserialisasi, atau ketika suatu blok disalin dan ditempel.
Dua kasus penggunaan umum untuk hal ini adalah:
- Saat blok individual dimuat ke ruang kerja tempat data pendukung model tidak ada, ikon memiliki cukup informasi dalam statusnya sendiri untuk membuat model data baru.
- Jika suatu blok disalin dan ditempel, ikon akan selalu membuat dukungan baru alih-alih mereferensikan model yang sudah ada.
Status pemuatan
Untuk menyimpan status ikon, Anda harus mengimplementasikan
Metode loadState
dari ISerializable
dalam antarmuka berbasis web
yang sederhana. Metode ini menggunakan JSON yang ditampilkan oleh metode saveState
Anda.
loadState(state) {
this.state = state;
}
Mendaftarkan class ikon
Terakhir, Anda perlu mendaftarkan ikon
Anda sehingga sistem serialisasi dapat
buat instance-nya. Perlu diingat bahwa IconType
yang digunakan untuk mendaftarkan
ikon harus memiliki string yang sama dengan yang ditampilkan oleh
Metode getType
.
class myIcon extends Blockly.icons.Icon {
getType() {
return new Blockly.icons.IconType('my_icon');
}
}
Blockly.icons.registry.register(
new Blockly.icons.IconType('my_icon'), myIcon);