blockly > WorkspaceSvg

Class WorkspaceSvg

Class untuk ruang kerja. Ini adalah area di layar dengan tempat sampah, scrollbar, balon, dan penarikan opsional.

Tanda Tangan:

export declare class WorkspaceSvg extends Workspace implements IASTNodeLocationSvg 

Memperluas: Ruang Kerja

Menerapkan: IASTNodeLocationSvg

Konstruktor

Konstruktor Pengubah Deskripsi
(konstruktor)(opsi) Membuat instance baru dari class WorkspaceSvg

Properti

Properti Pengubah Jenis Deskripsi
configureContextMenu ((menuOptions: ContextMenuOption[], e: Event) => void) | null (kosong) Developer dapat menentukan fungsi ini untuk menambahkan opsi menu kustom ke menu konteks ruang kerja atau mengedit kumpulan opsi menu yang dibuat di ruang kerja.
keyboardAccessibilityMode boolean True jika mode aksesibilitas keyboard aktif, false jika tidak.
dirender boolean Status render ruang kerja SVG. Menampilkan false untuk ruang kerja headless dan benar untuk instance WorkspaceSvg.
skala angka Skala saat ini.
scrollbar ScrollbarPair | null (kosong) Scrollbar ruang kerja ini, jika ada.
scrollX angka

Offset scroll horizontal saat ini dalam unit piksel, relatif terhadap asal ruang kerja.

Sebaiknya pertimbangkan tampilan, dan kanvas yang bergerak di bawah tampilan tersebut. Saat kanvas bergerak ke kanan, nilai ini menjadi lebih positif, dan tampilannya sekarang "melihat" sisi kiri kanvas. Saat kanvas digerakkan ke kiri, nilai ini menjadi lebih negatif, dan tampilan menjadi "melihat" sisi kanan kanvas.

Hal yang membingungkan tentang nilai ini adalah nilai ini tidak, dan tidak boleh menyertakan offset Kiri absolut. Hal ini karena digunakan untuk menghitung nilai viewLeft.

ViewLeft bersifat relatif terhadap asal ruang kerja (meskipun dalam unit piksel). Asal ruang kerja adalah sudut kiri atas ruang kerja (setidaknya saat diaktifkan). Tombol ini digeser dari kiri atas blocklyDiv agar tidak berada di bawah toolbox.

Saat ruang kerja diaktifkan, viewLeft dan origin ruang kerja akan berada di lokasi X yang sama. Saat kanvas bergeser ke kanan di bawah tampilan, nilai ini (scrollX) menjadi lebih positif, dan viewLeft menjadi lebih negatif dibandingkan dengan asal ruang kerja (bayangkan asal ruang kerja sebagai titik pada kanvas yang bergeser ke kanan saat kanvas bergerak).

Jadi, jika scrollX menyertakan absolutLeft, ini akan "membatalkan pergeseran" asal ruang kerja. Ini berarti bahwa viewLeft akan mewakili tepi kiri blocklyDiv, bukan tepi kiri ruang kerja.

scrollY angka

Offset scroll vertikal saat ini dalam unit piksel, relatif terhadap asal ruang kerja.

Sebaiknya pertimbangkan tampilan, dan kanvas yang bergerak di bawah tampilan tersebut. Saat kanvas bergerak ke bawah, nilai ini menjadi lebih positif, dan tampilannya sekarang "melihat" bagian atas kanvas. Saat kanvas bergerak ke atas, nilai ini menjadi lebih negatif, dan tampilannya adalah "melihat" bagian bawah kanvas.

Hal yang membingungkan tentang nilai ini adalah bahwa nilai ini tidak, dan tidak boleh menyertakan offset absolutTop. Ini karena digunakan untuk menghitung nilai viewTop.

ViewTop bersifat relatif terhadap asal ruang kerja (meskipun dalam unit piksel). Asal ruang kerja adalah sudut kiri atas ruang kerja (setidaknya saat diaktifkan). Tombol ini digeser dari kiri atas blocklyDiv agar tidak berada di bawah toolbox.

Saat ruang kerja diaktifkan, viewTop dan asal ruang kerja berada di lokasi Y yang sama. Saat kanvas bergeser ke bawah, nilai ini (scrollY) menjadi lebih positif, dan viewTop menjadi lebih negatif dibandingkan dengan asal ruang kerja (gambar dalam asal ruang kerja sebagai titik pada kanvas yang bergeser ke bawah saat kanvas bergerak).

Jadi, jika scrollY menyertakan absolutTop, hal ini akan dengan cara "membatalkan perubahan" asal ruang kerja. Ini berarti bahwa viewTop akan mewakili tepi atas blocklyDiv, bukan tepi atas ruang kerja.

startScrollX angka Nilai scroll horizontal saat scroll dimulai dalam unit piksel.
startScrollY angka Nilai scroll vertikal saat scroll dimulai dalam unit piksel.
svgBackground_ SVGElement
svgBlockCanvas_ SVGElement
svgBubbleCanvas_ SVGElement
svgGroup_ SVGElement
themeManager_ protected ThemeManager
tempat sampah Tempat Sampah | null (kosong) Tempat sampah ruang kerja (jika ada).
zoomControls_ ZoomControls | null (kosong)

Metode

Metode Pengubah Deskripsi
addTopBlock(block) Menambahkan blok ke daftar blok teratas.
addTopBoundedElement(element) Menambahkan elemen yang dibatasi ke daftar elemen dengan batas atas.
addTopComment(comment) Menambahkan komentar ke daftar komentar teratas.
centerOnBlock(id, blockOnly) Scroll ruang kerja ke tengah blok yang ditentukan. Jika blok memiliki blok lain yang ditumpuk di bawahnya, ruang kerja akan dipusatkan pada tumpukan, kecuali jika blockOnly bernilai benar (true).
cleanUp() Bersihkan ruang kerja dengan mengurutkan semua blok dalam sebuah kolom.
clear() Buang semua blok di ruang kerja, dengan pengoptimalan untuk mencegah perubahan ukuran.
createDom(opt_backgroundClass, injectionDiv) Buat elemen DOM ruang kerja.
createVariable(name, opt_type, opt_id) Buat variabel baru dengan nama yang diberikan. Perbarui flyout untuk segera menampilkan variabel baru.
deleteVariableById(id) Hapus variabel menurut ID yang diteruskan. Perbarui flyout untuk segera menunjukkan bahwa variabel tersebut dihapus.
dispose() Buang ruang kerja ini. Batalkan tautan dari semua elemen DOM untuk mencegah kebocoran memori.
getAllBlocks(ordered) Temukan semua blok di Workspace. Blok diurutkan secara opsional berdasarkan posisi; atas ke bawah (dengan sedikit bias LTR atau RTL).
getAudioManager() Dapatkan pengelola audio untuk ruang kerja ini.
getBlockById(id) Temukan blok pada ruang kerja ini dengan ID yang ditentukan.
getBlocksBoundingBox() Hitung kotak pembatas untuk blok pada ruang kerja. Sistem koordinat: koordinat ruang kerja.
getBubbleCanvas() Dapatkan elemen SVG yang membentuk permukaan balon.
getButtonCallback(key) Dapatkan fungsi callback yang terkait dengan kunci tertentu, untuk klik pada tombol dan label di flyout.
getCanvas() Dapatkan elemen SVG yang membentuk permukaan gambar.
getComponentManager() Mendapatkan pengelola komponen untuk ruang kerja ini.
getCursor() Kursor untuk ruang kerja ini.
getDragTarget(e) Menampilkan target tarik saat peristiwa pointer berakhir.
getFlyout(opt_own) Pengambil untuk flyout yang terkait dengan ruang kerja ini. {i>flyout<i} ini dapat dimiliki oleh {i>toolbox<i} atau ruang kerja, tergantung pada konfigurasi {i>toolbox<i}. Nilainya akan null jika tidak ada flyout.
getGrid() Dapatkan objek grid untuk ruang kerja ini, atau null jika tidak ada.
getInverseScreenCTM() Pengambil untuk CTM layar terbalik.
getLayerManager()
getMarkerManager() Dapatkan pengelola penanda untuk ruang kerja ini.
getMetricsManager() Mendapatkan pengelola metrik untuk ruang kerja ini.
getParentSvg() Dapatkan elemen SVG yang berisi ruang kerja ini. Catatan: Kami menganggap ini hanya dipanggil setelah ruang kerja dimasukkan ke dalam DOM.
getRenderer() Dapatkan perender blok yang dilampirkan ke ruang kerja ini.
getRootWorkspace()
getScale() Dapatkan faktor zoom ruang kerja. Jika ruang kerja memiliki induk, kami memanggil induk untuk mendapatkan skala ruang kerja.
getSvgGroup() Menampilkan grup SVG untuk ruang kerja.
getTheme() Mendapatkan objek tema Workspace.
getToolbox() Pengambil untuk toolbox yang terkait dengan ruang kerja ini, jika ada.
getToolboxCategoryCallback(key) Dapatkan fungsi callback yang terkait dengan kunci yang diberikan, untuk mengisi kategori toolbox kustom di ruang kerja ini.
getTopBlocks(ordered) Menemukan blok tingkat teratas dan mengembalikannya. Blok diurutkan secara opsional berdasarkan posisi; atas ke bawah (dengan sedikit bias LTR atau RTL).
getTopBoundedElements() Menemukan elemen yang dibatasi tingkat teratas dan menampilkannya.
getWidth() Menampilkan offset horizontal ruang kerja. Ditujukan untuk kompatibilitas LTR/RTL dalam XML.
hideChaff(onlyClosePopups) Tutup tooltip, menu konteks, pilihan dropdown, dll.
hideComponents(onlyClosePopups) Sembunyikan semua komponen yang dapat disembunyikan otomatis (seperti flyout, tempat sampah, dan komponen apa pun yang didaftarkan pengguna).
highlightBlock(id, opt_state) Tandai atau hapus tanda blok di ruang kerja. Sorotan blok sering digunakan untuk menandai blok yang sedang dieksekusi secara visual.
isDraggable() Apakah ruang kerja ini dapat ditarik?
isDragging() Apakah pengguna saat ini menarik blok atau men-scroll flyout/workspace?
isMovable()

Apakah ruang kerja ini dapat dipindahkan?

Ini berarti pengguna dapat mengubah posisi koordinat X Y ruang kerja melalui input. Tindakan ini dapat dilakukan melalui scrollbar, roda scroll, tarik, atau zoom dengan roda scroll atau cubit (karena zoom dipusatkan pada posisi mouse). Ini tidak termasuk zoom dengan kontrol zoom karena koordinat X Y ditentukan secara terprogram.

isMovableHorizontally() Apakah ruang kerja ini dapat dipindahkan secara horizontal?
isMovableVertically() Apakah ruang kerja ini dapat dipindahkan secara vertikal?
isVisible() Pengambil untuk isVisible
markFocused() Tandai ruang kerja ini sebagai ruang kerja utama yang saat ini difokuskan.
moveDrag(e) Lacak tarikan objek di ruang kerja ini.
newBlock(prototypeName, opt_id) Mendapatkan blok yang baru dibuat.
newComment(id) Mendapatkan komentar yang baru dibuat.
recordDragTargets() Buat daftar semua area yang dihapus untuk ruang kerja ini.
refreshTheme() Memuat ulang semua blok di ruang kerja setelah pembaruan tema.
registerButtonCallback(key, func) Mendaftarkan fungsi callback yang terkait dengan kunci tertentu, untuk klik pada tombol dan label di flyout. Misalnya, tombol yang ditentukan oleh XML harus dicocokkan dengan panggilan ke registerButtonCallback("CREATE_VARIABLE", yourCallbackFunction).
registerToolboxCategoryCallback(key, func) Daftarkan fungsi callback yang terkait dengan kunci yang diberikan, untuk mengisi kategori toolbox kustom di ruang kerja ini. Lihat variabel dan kategori prosedur sebagai contoh.
removeButtonCallback(key) Menghapus callback untuk klik pada tombol di flyout.
removeToolboxCategoryCallback(key) Hapus callback untuk klik pada nama kategori khusus di toolbox.
removeTopBlock(block) Menghapus blok dari daftar blok teratas.
removeTopBoundedElement(element) Menghapus elemen yang dibatasi dari daftar elemen dengan batas atas.
removeTopComment(comment) Menghapus komentar dari daftar komentar teratas.
renameVariableById(id, newName) Ganti nama variabel dengan memperbarui namanya di peta variabel. Perbarui flyout untuk segera menampilkan variabel yang telah diganti namanya.
render() Render semua blok di ruang kerja.
resize() Mengubah ukuran dan mengubah posisi semua chrome ruang kerja (toolbox, sampah, scrollbar, dll.) Ini harus dipanggil saat sesuatu berubah yang memerlukan penghitungan ulang dimensi dan posisi sampah, zoom, kotak alat, dll. (misalnya, pengubahan ukuran jendela).
scrollCenter() Menempatkan ruang kerja di tengah.
setResizeHandlerWrapper(handler) Simpan data pengendali perubahan ukuran sehingga kita dapat menghapusnya nanti saat dibuang.
setResizesEnabled(enabled) Perbarui apakah ruang kerja ini telah mengaktifkan perubahan ukuran. Jika diaktifkan, ruang kerja akan diubah ukurannya jika sesuai. Jika dinonaktifkan, ruang kerja tidak akan diubah ukurannya hingga diaktifkan kembali. Gunakan untuk menghindari perubahan ukuran selama operasi batch, untuk meningkatkan performa.
setScale(newScale) Tetapkan faktor zoom ruang kerja.
setTheme(theme) Tetapkan objek tema Workspace. Jika tidak ada tema yang diteruskan, default ke tema Classic.
setVisible(isVisible) Mengalihkan visibilitas ruang kerja. Saat ini hanya ditujukan untuk ruang kerja utama.
startDrag(e, xy) Mulai lacak tarikan objek di ruang kerja ini.
translate(x, y) Terjemahkan ruang kerja ini ke koordinat baru.
updateInverseScreenCTM() Tandai CTM layar terbalik sebagai kotor.
updateToolbox(toolboxDef) Modifikasi pohon blok pada toolbox yang ada.
zoom(x, y, jumlah) Memperbesar atau memperkecil ruang kerja relatif terhadap/di tengah koordinat (x, y) yang diberikan.
zoomCenter(type) Memperbesar atau memperkecil blok yang berada di tengah bagian tengah tampilan.
zoomToFit() Perbesar blok agar pas dengan ruang kerja jika memungkinkan.