blockly > WorkspaceSvg

Kelas WorkspaceSvg

Class untuk ruang kerja. Ini adalah area pada layar dengan tempat sampah, scroll bar, balon, dan penarikan opsional.

Tanda Tangan:

export declare class WorkspaceSvg extends Workspace implements IASTNodeLocationSvg 

Memperluas: Ruang kerja

Penerapan: 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 Developer dapat menentukan fungsi ini untuk menambahkan opsi menu kustom ke menu konteks ruang kerja atau mengedit kumpulan opsi menu yang dibuat oleh 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 true untuk instance WorkspaceSvg.
skala angka Skala saat ini.
scrollbar ScrollbarPair | null Scrollbar ruang kerja ini, jika ada.
scrollX angka

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

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

Yang membingungkan tentang nilai ini adalah nilai ini tidak, dan tidak boleh menyertakan offset absolutLeft. Hal ini karena digunakan untuk menghitung nilai viewLeft.

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

Saat ruang kerja diaktifkan, viewLeft dan asal ruang kerja 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, hal ini akan dengan cara "membatalkan pemindahan" asal ruang kerja. Artinya, 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 pikirkan tentang tampilan, dan kanvas yang bergerak di bawah tampilan tersebut. Saat kanvas bergerak ke bawah, nilai ini menjadi lebih positif, dan tampilan sekarang "melihat" bagian atas kanvas. Saat kanvas bergerak ke atas, nilai ini menjadi lebih negatif, dan tampilan "melihat" bagian bawah kanvas.

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

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

Jika ruang kerja diaktifkan, asal viewTop dan 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 di asal ruang kerja sebagai titik di kanvas yang meluncur ke bawah saat kanvas bergerak).

Jadi, jika scrollY akan menyertakan absolutTop, tindakan ini akan "mengurungkan" asal ruang kerja. Artinya, viewTop akan mewakili tepi atas blocklyDiv, bukan tepi atas ruang kerja.

startScrollX angka Nilai scroll horizontal saat men-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 Tempat sampah ruang kerja (jika ada).
zoomControls_ ZoomControls | null

Metode

Metode Pengubah Deskripsi
addTopBlock(block) Menambahkan blok ke daftar blok teratas.
addTopBoundedElement(element) Menambahkan elemen yang dibatasi ke daftar elemen dengan batasan 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 blockOnly bernilai true (benar).
pembersihan() Bersihkan ruang kerja dengan mengurutkan semua blok dalam 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 menu {i>flyout<i} untuk segera menampilkan variabel baru.
deleteVariableById(id) Hapus variabel dengan ID yang diteruskan. Perbarui menu {i>flyout<i} untuk segera menunjukkan bahwa variabel telah dihapus.
dispose() Buang ruang kerja ini. Batalkan tautan dari semua elemen DOM untuk mencegah kebocoran memori.
getAllBlocks(ordered) Menemukan semua blok di Workspace. Blok diurutkan secara opsional berdasarkan posisi; dari atas ke bawah (dengan sedikit bias LTR atau RTL).
getAudioManager() Dapatkan pengelola audio untuk ruang kerja ini.
getBlockById(id) Temukan blok di ruang kerja ini dengan ID yang ditentukan.
getBlocksBoundingBox() Hitung kotak pembatas untuk blok pada ruang kerja. Sistem koordinat: koordinat ruang kerja.
getBubbleCanvas() Mendapatkan elemen SVG yang membentuk permukaan balon.
getButtonCallback(key) Mendapatkan fungsi callback yang dikaitkan dengan tombol 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 yang diselesaikan oleh peristiwa pointer.
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 petak untuk ruang kerja ini, atau null jika tidak ada.
getInverseScreenCTM() Pengambil untuk CTM layar terbalik.
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 berasumsi bahwa 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, kita memanggil induk untuk mendapatkan skala ruang kerja.
getSvgGroup() Menampilkan grup SVG untuk ruang kerja.
getTheme() Dapatkan objek tema Workspace.
getToolbox() Pengambil untuk toolbox yang terkait dengan ruang kerja ini, jika ada.
getToolboxCategoryCallback(key) Dapatkan fungsi callback yang dikaitkan dengan tombol tertentu, untuk mengisi kategori toolbox kustom di ruang kerja ini.
getTopBlocks(ordered) Menemukan blok tingkat teratas dan menampilkannya. Blok diurutkan secara opsional berdasarkan posisi; dari atas ke bawah (dengan sedikit bias LTR atau RTL).
getTopBoundedElements() Menemukan elemen yang dibatasi tingkat atas 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 komponen yang dapat disembunyikan otomatis (seperti flyout, tempat sampah, dan komponen apa pun yang terdaftar oleh pengguna).
highlightBlock(id, opt_state) Tandai atau hapus tanda blok di ruang kerja. Penyorotan 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 menu flyout/workspace?
isMovable()

Apakah ruang kerja ini dapat dipindahkan?

Artinya pengguna dapat mengubah posisi koordinat X Y ruang kerja melalui input. Ini dapat dilakukan melalui scrollbar, roda scroll, penarikan, atau zoom dengan roda scroll atau cubit (karena zoom berada di tengah 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) Melacak tarikan objek di ruang kerja ini.
newBlock(prototypeName, opt_id) Dapatkan blok yang baru dibuat.
paste(status) Menempelkan blok atau komentar ruang kerja yang diberikan ke ruang kerja. Tidak memeriksa apakah ada kapasitas yang tersisa untuk objek, hal itu harus dilakukan sebelum memanggil metode ini.
recordDragTargets() Buat daftar semua area yang dihapus untuk ruang kerja ini.
refreshTheme() Muat ulang semua blok di ruang kerja setelah tema diperbarui.
registerButtonCallback(key, func) Daftarkan fungsi callback yang terkait dengan kunci tertentu, untuk klik pada tombol dan label di flyout. Misalnya, tombol yang ditentukan oleh XML harus cocok dengan panggilan ke registerButtonCallback("CREATE_VARIABLE", yourCallbackFunction).
registerToolboxCategoryCallback(key, func) Daftarkan fungsi callback yang terkait dengan kunci tertentu, untuk mengisi kategori toolbox kustom di ruang kerja ini. Lihat kategori variabel dan prosedur sebagai contoh.
removeButtonCallback(key) Menghapus callback untuk klik pada tombol di flyout.
removeToolboxCategoryCallback(key) Menghapus callback untuk klik pada nama kategori kustom di toolbox.
removeTopBlock(block) Menghapus satu blok dari daftar blok teratas.
removeTopBoundedElement(element) Menghapus elemen yang dibatasi dari daftar elemen dengan batasan atas.
removeTopComment(comment) Menghapus komentar dari daftar komentar teratas.
renameVariableById(id, newName) Mengganti nama variabel dengan memperbarui namanya di peta variabel. Perbarui menu flyout untuk langsung menampilkan variabel yang telah diganti namanya.
render() Render semua blok di ruang kerja.
resize() Mengubah ukuran dan memosisikan ulang semua Chrome ruang kerja (toolbox, sampah, scrollbar, dll.) Ini harus dipanggil ketika ada perubahan yang memerlukan penghitungan ulang dimensi dan posisi sampah, zoom, toolbox, dll. (misalnya perubahan ukuran jendela).
scrollCenter() Letakkan ruang kerja di tengah.
setResizeHandlerWrapper(handler) Menyimpan data pengendali pengubahan ukuran sehingga kita dapat menghapusnya nanti dan dibuang.
setResizesEnabled(enabled) Perbarui apakah perubahan ukuran ruang kerja ini telah diaktifkan. Jika diaktifkan, ukuran ruang kerja akan diubah sesuai kebutuhan. Jika dinonaktifkan, ukuran ruang kerja tidak akan diubah hingga diaktifkan kembali. Gunakan untuk menghindari pengubahan ukuran selama operasi batch demi meningkatkan performa.
setScale(newScale) Tetapkan faktor zoom ruang kerja.
setTheme(theme) Tetapkan objek tema Workspace. Jika tidak ada tema yang diteruskan, tetapkan default ke tema Classic.
setVisible(isVisible) Mengubah 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 layar terbalik CTM sebagai kotor.
updateToolbox(toolboxDef) Ubah pohon blok pada toolbox yang ada.
zoom(x, y, jumlah) Memperbesar atau memperkecil ruang kerja sesuai/dipusatkan pada koordinat (x, y) yang ditentukan.
zoomCenter(type) Memperbesar blok di tengah-tengah tampilan dengan memperbesar atau memperkecil.
zoomToFit() Perbesar blok agar pas dengan ruang kerja jika memungkinkan.