blockly > Peristiwa

Namespace peristiwa

Class

Kelas Deskripsi
BlockBase Class abstrak untuk peristiwa apa pun yang terkait dengan blok.
BlockChange Memberi tahu pemroses saat beberapa elemen blok telah berubah (misalnya, nilai kolom, komentar, dll.).
BlockCreate Memberi tahu pemroses saat blok (atau tumpukan blok yang terhubung) dibuat.
BlockDelete Memberi tahu pemroses saat blok (atau tumpukan blok yang terhubung) dihapus.
BlockDrag Memberi tahu pemroses saat blok ditarik/diletakkan secara manual.
BlockFieldIntermediateChange Memberi tahu pemroses saat nilai kolom blok telah berubah, tetapi perubahannya belum selesai, dan diharapkan diikuti dengan peristiwa perubahan blok.
BlockMove Memberi tahu pemroses saat blok dipindahkan. Hal ini dapat terjadi dari satu koneksi ke koneksi lainnya, atau dari satu lokasi di ruang kerja ke lokasi lainnya.
BubbleOpen Class untuk peristiwa pembukaan balon.
Klik Memberi tahu pemroses bahwa beberapa elemen blockly diklik.
CommentBase Class abstrak untuk peristiwa komentar.
CommentChange Memberi tahu pemroses bahwa konten komentar ruang kerja telah berubah.
CommentCollapse
CommentCreate Memberi tahu pemroses bahwa komentar ruang kerja telah dibuat.
CommentDelete Memberi tahu pemroses bahwa komentar ruang kerja telah dihapus.
CommentDrag Memberi tahu pemroses saat komentar ditarik/diletakkan secara manual.
CommentMove Memberi tahu pemroses bahwa komentar ruang kerja telah dipindahkan.
CommentResize Memberi tahu pemroses bahwa ukuran komentar ruang kerja telah diubah.
FinishedLoading Memberi tahu pemroses saat ruang kerja selesai melakukan deserialisasi dari JSON/XML.
Dipilih Class untuk peristiwa yang dipilih. Memberi tahu pemroses bahwa elemen baru telah dipilih.
ThemeChange Memberi tahu pemroses bahwa tema ruang kerja telah berubah.
ToolboxItemSelect Memberi tahu pemroses bahwa item toolbox telah dipilih.
TrashcanOpen Memberi tahu pemroses saat tempat sampah dibuka atau ditutup.
UiBase Class dasar untuk peristiwa UI. Peristiwa UI adalah peristiwa yang tidak perlu dikirim melalui jaringan agar pengeditan multi-pengguna berfungsi (misalnya, men-scroll ruang kerja, memperbesar, membuka kategori toolbox). Peristiwa UI tidak mengurungkan atau mengulangi.
VarBase Class abstrak untuk peristiwa variabel.
VarCreate Memberi tahu pemroses bahwa model variabel telah dibuat.
VarDelete Memberi tahu pemroses bahwa model variabel telah dihapus.
VarRename Memberi tahu pemroses bahwa model variabel diganti namanya.
VarTypeChange Memberi tahu pemroses bahwa jenis variabel telah berubah.
ViewportChange

Memberi tahu pemroses bahwa posisi atau skala platform ruang kerja telah berubah.

Tidak memberi tahu saat ruang kerja itu sendiri mengubah ukurannya.

Class Abstrak

Class Abstrak Deskripsi
Abstrak Class abstrak untuk peristiwa.

Enumerasi

Enumerasi Deskripsi
BubbleType
ClickTarget

Fungsi

Fungsi Deskripsi
clearPendingUndo() Ubah peristiwa urungkan yang tertunda sehingga saat diaktifkan, peristiwa tersebut tidak masuk ke data sebelumnya. Dipanggil oleh Workspace.clearUndo.
disable() Berhenti mengirim peristiwa. Setiap panggilan ke fungsi ini JUGA HARUS memanggil enable.
disableOrphans(event) Menetapkan apakah blok dinonaktifkan, bergantung pada apakah blok terhubung dengan benar. Gunakan ini pada aplikasi yang mengharuskan semua blok terhubung ke blok atas.
enable() Mulai mengirim peristiwa. Kecuali jika peristiwa sudah dinonaktifkan saat panggilan yang sesuai untuk menonaktifkan dilakukan.
filter(queue)

Memfilter peristiwa yang diantrekan dengan menggabungkan duplikat, menghapus peristiwa null, dan merekam ulang peristiwa BlockChange.

Histori fungsi ini:

Fungsi ini awalnya ditambahkan dalam commit cf257ea5 dengan tujuan mengurangi jumlah total peristiwa yang dikirim secara drastis. Awalnya, masalah ini hanya memengaruhi peristiwa BlockMove, tetapi peristiwa lainnya ditambahkan dari waktu ke waktu.

Kode ditambahkan untuk mengurutkan ulang peristiwa BlockChange yang ditambahkan dalam commit 5578458, karena alasan yang tidak pasti, tetapi kemungkinan besar sebagai bagian dari upaya yang hanya berhasil sebagian untuk memperbaiki masalah terkait pengurutan peristiwa selama mutasi blok. Kode ini mungkin seharusnya ditambahkan ke bagian atas fungsi, sebelum penggabungan dan penghapusan null, tetapi ditambahkan di bagian bawah karena alasan yang sekarang sudah dilupakan. Lihat investigasi bug ini untuk mengetahui diskusi yang lebih lengkap tentang masalah yang mendasarinya dan beberapa kegagalan yang muncul karena perbaikan yang tidak lengkap/salah ini:

https://github.com/google/blockly/issues/8225#issuecomment-2195751783 https://github.com/google/blockly/issues/2037#issuecomment-2209696351

Kemudian, di PR #1205, penerapan O(n^2) asli diganti dengan penerapan waktu linear, meskipun perbaikan tambahan dilakukan setelahnya.

Pada Agustus 2024, sejumlah penyederhanaan yang signifikan dilakukan:

Fungsi ini sebelumnya dipanggil dari Workspace.prototype.undo, tetapi mutasi peristiwa oleh fungsi ini adalah penyebab masalah #7026 (perhatikan bahwa peristiwa akan digabungkan secara berbeda dalam urutan terbalik vs. urutan maju). Perbaikan yang awalnya dipilih untuk hal ini adalah penambahan (di PR #7069) kode ke fireNow untuk memfilter ulang .undoStack_ dan .redoStack_ dari ruang kerja yang baru saja terlibat dalam pengiriman peristiwa; hal ini tampaknya menyelesaikan masalah, tetapi menambahkan kompleksitas tambahan yang cukup besar dan mempersulit alasan tentang cara peristiwa diproses untuk mengurungkan/melakukan ulang, sehingga panggilan dari undo dan kode pasca-pemrosesan dihapus, dan forward=true dijadikan default saat memanggil fungsi dengan forward=false tidak digunakan lagi.

Pada saat yang sama, kode error untuk mengurutkan ulang peristiwa BlockChange diganti dengan versi fungsi yang sama yang lebih sedikit error dalam fungsi baru, enqueueEvent, yang dipanggil dari fireInternal, sehingga memastikan bahwa peristiwa akan berada dalam urutan yang benar pada saat filter dipanggil.

Selain itu, kode penggabungan peristiwa diubah sehingga hanya peristiwa yang berdekatan yang akan digabungkan. Hal ini menyederhanakan penerapan sekaligus memastikan bahwa penggabungan peristiwa tidak dapat menyebabkan pengurutan ulang.

fire(event)

Mengantrekan peristiwa yang akan dikirim untuk mengubah pemroses.

Catatan:

- Peristiwa dimasukkan ke antrean hingga waktu tunggu habis, biasanya setelah rendering selesai atau di akhir microtask saat ini, jika tidak berjalan di browser. - Peristiwa dalam antrean dapat mengalami modifikasi destruktif dengan digabungkan dengan peristiwa yang diantrekan nanti, tetapi hanya sampai peristiwa tersebut diaktifkan. - Peristiwa dikirim melalui metode fireChangeListener di ruang kerja yang terpengaruh.

fromJson(json, workspace) Dekode JSON menjadi peristiwa.
get(eventType) Mendapatkan class untuk jenis peristiwa tertentu dari registry.
getGroup() Grup saat ini.
getRecordUndo() Menampilkan apakah peristiwa akan ditambahkan ke data sebelumnya atau tidak.
isEnabled() Menampilkan apakah peristiwa dapat diaktifkan atau tidak.
setGroup(state) Memulai atau menghentikan grup.
setRecordUndo(newValue) Menetapkan apakah peristiwa harus ditambahkan ke data sebelumnya.

Antarmuka

Antarmuka Deskripsi
AbstractEventJson
BlockBaseJson
BlockChangeJson
BlockCreateJson
BlockDeleteJson
BlockDragJson
BlockFieldIntermediateChangeJson
BlockMoveJson
BubbleOpenJson
ClickJson
CommentBaseJson
CommentChangeJson
CommentCollapseJson
CommentCreateJson
CommentDragJson
CommentMoveJson
CommentResizeJson
SelectedJson
ThemeChangeJson
ToolboxItemSelectJson
TrashcanOpenJson
VarBaseJson
VarCreateJson
VarDeleteJson
VarRenameJson
VarTypeChangeJson
ViewportChangeJson

Variabel

Variabel Deskripsi
BLOCK_CHANGE
BLOCK_CREATE
BLOCK_DELETE
BLOCK_DRAG
BLOCK_FIELD_INTERMEDIATE_CHANGE
BLOCK_MOVE
BUBBLE_OPEN
BUMP_EVENTS

Daftar peristiwa yang menyebabkan objek didorong kembali ke bagian ruang kerja yang terlihat.

Jangan sampai tertukar dengan pemukulan sehingga koneksi yang terputus tidak tampak terhubung.

UBAH
KLIK
COMMENT_CHANGE
COMMENT_CREATE
COMMENT_DELETE
COMMENT_DRAG
COMMENT_MOVE
COMMENT_RESIZE
BUAT
DELETE
FINISHED_LOADING
MOVE
DIPILIH
THEME_CHANGE
TOOLBOX_ITEM_SELECT
TRASHCAN_OPEN
UI
VAR_CREATE
VAR_DELETE
VAR_RENAME
VIEWPORT_CHANGE

Alias Jenis

Alias Jenis Deskripsi
BumpEvent

Jenis peristiwa yang menyebabkan objek kembali ke bagian ruang kerja yang terlihat.

Jangan sampai tertukar dengan pemukulan sehingga koneksi yang terputus tidak tampak terhubung.