บล็อก > WorkspaceSvg

คลาส WorkspaceSvg

ชั้นเรียนสำหรับพื้นที่ทำงาน นี่เป็นพื้นที่บนหน้าจอที่มีถังขยะ แถบเลื่อน ลูกโป่ง และการลากแบบไม่บังคับ

ลายเซ็น:

export declare class WorkspaceSvg extends Workspace implements IASTNodeLocationSvg 

ขยาย: Workspace

การใช้งาน: IASTNodeLocationSvg

ผู้ผลิต

ผู้ผลิต ตัวปรับแต่ง คำอธิบาย
(เครื่องมือสร้าง)(ตัวเลือก) สร้างอินสแตนซ์ใหม่ของคลาส WorkspaceSvg

พร็อพเพอร์ตี้

พร็อพเพอร์ตี้ ตัวปรับแต่ง ประเภท คำอธิบาย
configureContextMenu ((menuOptions: ContextMenuOption[], e: Event) => void) | null นักพัฒนาซอฟต์แวร์อาจกำหนดฟังก์ชันนี้เพื่อเพิ่มตัวเลือกเมนูที่กำหนดเองลงในเมนูตามบริบทของพื้นที่ทำงาน หรือแก้ไขชุดตัวเลือกเมนูที่สร้างขึ้นจากพื้นที่ทำงาน
keyboardAccessibilityMode boolean "จริง" หากโหมดการช่วยเหลือพิเศษของแป้นพิมพ์เปิดอยู่ หากไม่เปิด "เท็จ"
แสดงผลแล้ว boolean สถานะการแสดงผลของพื้นที่ทำงาน SVG แสดงผล false สำหรับพื้นที่ทำงานแบบไม่มีส่วนหัวและ true สำหรับอินสแตนซ์ WorkspaceSvg
ปรับสเกล ตัวเลข มาตราส่วนปัจจุบัน
แถบเลื่อน ScrollbarPair | ค่าว่าง แถบเลื่อนของพื้นที่ทำงานนี้ หากมี
scrollX ตัวเลข

ออฟเซ็ตการเลื่อนแนวนอนในปัจจุบันในหน่วยพิกเซลซึ่งสัมพันธ์กับต้นทางของพื้นที่ทำงาน

ลองนึกถึงมุมมองและผืนผ้าใบที่เคลื่อนที่อยู่ใต้มุมมองนั้น เมื่อผืนผ้าใบเลื่อนไปทางขวา ค่านี้จะกลายเป็นเชิงบวกมากขึ้น และมุมมองตอนนี้กำลัง "มองเห็น" ที่ด้านซ้ายของผืนผ้าใบ เมื่อผืนผ้าใบเลื่อนไปด้านซ้าย ค่านี้จะเป็นค่าลบมากขึ้น และมุมมองกำลัง "มองเห็น" ทางด้านขวาของผืนผ้าใบ

สิ่งที่น่าสับสนเกี่ยวกับค่านี้คือ ค่านี้ไม่มี และต้องไม่มี absoluteLeftจะมีผลกับ เนื่องจากใช้ในการคำนวณค่า viewLeft

viewLeft จะสัมพันธ์กับต้นทางของพื้นที่ทำงาน (แม้ว่าจะมีหน่วยพิกเซล) ต้นทางของพื้นที่ทำงานคือมุมซ้ายบนของพื้นที่ทำงาน (อย่างน้อยเมื่อเปิดใช้) มีการเลื่อนจากด้านซ้ายบนของ blocklyDiv เพื่อไม่ให้อยู่ใต้กล่องเครื่องมือ

เมื่อเปิดใช้พื้นที่ทำงาน ต้นทาง viewLeft และต้นทางของพื้นที่ทำงานจะอยู่ที่ตำแหน่ง X เดียวกัน เมื่อผืนผ้าใบเลื่อนไปด้านล่างมุมมองด้านขวา ค่านี้ (scrollX) เป็นบวกมากขึ้น และ viewLeft จะเป็นค่าลบมากขึ้นเมื่อเทียบกับต้นทางของพื้นที่ทำงาน (ลองนึกว่าต้นทางของพื้นที่ทำงานเป็นจุดบนผืนผ้าใบเลื่อนไปด้านขวาเมื่อผืนผ้าใบเคลื่อนที่)

ดังนั้น หาก ScrollX รวมค่า absoluteLeft จะมีผลในลักษณะที่ "ยกเลิก" จุดเริ่มต้นของพื้นที่ทำงาน ซึ่งหมายความว่า viewLeft จะแสดงขอบด้านซ้ายของ blocklyDiv แทนที่จะเป็นขอบด้านซ้ายของพื้นที่ทำงาน

scrollY ตัวเลข

ออฟเซ็ตการเลื่อนแนวตั้งปัจจุบันในหน่วยพิกเซล ซึ่งสัมพันธ์กับต้นทางของพื้นที่ทำงาน

ลองนึกถึงมุมมองและผืนผ้าใบที่เคลื่อนที่อยู่ใต้มุมมองนั้น เมื่อผืนผ้าใบเลื่อนลง ค่านี้จะเป็นบวกมากขึ้น และมุมมองกำลัง "มองเห็น" ส่วนบนของผืนผ้าใบ เมื่อผืนผ้าใบเลื่อนขึ้น ค่านี้จะเป็นลบมากขึ้น และการแสดงผล "มองเห็น" ส่วนล่างของผืนผ้าใบ

สิ่งที่น่าสับสนเกี่ยวกับค่านี้ก็คือ ค่านี้ไม่มี และต้องไม่มีการชดเชยตำแหน่งบนสุดแบบสัมบูรณ์ เนื่องจากใช้ในการคำนวณค่า viewTop

viewTop จะสัมพันธ์กับต้นทางของพื้นที่ทำงาน (แม้ว่าจะเป็นหน่วยพิกเซล) ต้นทางของพื้นที่ทำงานคือมุมซ้ายบนของพื้นที่ทำงาน (อย่างน้อยเมื่อเปิดใช้) มีการเลื่อนจากด้านซ้ายบนของ blocklyDiv เพื่อไม่ให้อยู่ใต้กล่องเครื่องมือ

เมื่อเปิดใช้พื้นที่ทำงาน ต้นทาง ViewTop และต้นทางพื้นที่ทำงานจะอยู่ที่ตำแหน่ง Y เดียวกัน เมื่อผืนผ้าใบเลื่อนไปด้านล่าง ค่านี้ (scrollY) เป็นบวกมากขึ้น และ viewTop จะเป็นค่าลบมากขึ้นเมื่อเทียบกับต้นทางของพื้นที่ทำงาน (รูปภาพในต้นทางของพื้นที่ทำงานเป็นจุดบนผืนผ้าใบที่เลื่อนลงด้านล่างเมื่อผืนผ้าใบเคลื่อนที่)

ดังนั้นหากแถบเลื่อน Y รวมค่าสัมบูรณ์ แบบนี้จะ "ยกเลิก" ต้นทางของพื้นที่ทำงาน ซึ่งหมายความว่า viewTop จะแสดงขอบด้านบนของ blocklyDiv แทนที่จะเป็นขอบด้านบนของพื้นที่ทำงาน

startScrollX ตัวเลข ค่าการเลื่อนแนวนอนเมื่อเริ่มต้นการเลื่อนในหน่วยพิกเซล
startScrollY ตัวเลข ค่าการเลื่อนแนวตั้งเมื่อเลื่อนเริ่มในหน่วยพิกเซล
svgBackground_ SVGElement
svgBlockCanvas_ SVGElement
svgBubbleCanvas_ SVGElement
svgGroup_ SVGElement
themeManager_ protected ThemeManager
ถังขยะ ถังขยะ | null ถังขยะของพื้นที่ทำงาน (หากมี)
zoomControls_ ZoomControls | ไม่มีข้อมูล

วิธีการ

วิธีการ ตัวปรับแต่ง คำอธิบาย
addTopBlock(block) เพิ่มบล็อกลงในรายการบล็อกอันดับสูงสุด
addTopBoundedElement(element) เพิ่มองค์ประกอบที่มีการควบคุมไปยังรายการองค์ประกอบที่กำหนดขอบเขตด้านบนสุด
addTopComment(comment) เพิ่มความคิดเห็นลงในรายการความคิดเห็นยอดนิยม
centerOnBlock(id, blockOnly) เลื่อนพื้นที่ทำงานให้อยู่ตรงกลางของบล็อกที่ระบุ หากบล็อกมีบล็อกอื่นๆ ซ้อนอยู่ด้านล่าง พื้นที่ทำงานจะอยู่ตรงกลางในสแต็ก เว้นแต่ว่า blockOnly จะเป็นจริง
cleanUp() จัดระเบียบพื้นที่ทำงานโดยเรียงลำดับบล็อกทั้งหมดในคอลัมน์
clear() กำจัดบล็อกทั้งหมดในพื้นที่ทํางานพร้อมการเพิ่มประสิทธิภาพเพื่อป้องกันการปรับขนาด
createDom(opt_backgroundClass, injectionDiv) สร้างองค์ประกอบ DOM ของพื้นที่ทำงาน
createVariable(name, opt_type, opt_id) สร้างตัวแปรใหม่ด้วยชื่อดังกล่าว อัปเดตแฟล็กเอาต์เพื่อแสดงตัวแปรใหม่ทันที
deleteVariableById(id) ลบตัวแปรตามค่าที่ส่งในรหัส อัปเดตแฟล็กเอาต์เพื่อให้แสดงทันทีว่ามีการลบตัวแปรแล้ว
dispose() กำจัดพื้นที่ทำงานนี้ ยกเลิกการลิงก์จากองค์ประกอบ DOM ทั้งหมดเพื่อป้องกันการรั่วไหลของหน่วยความจำ
getAllBlocks(ordered) ค้นหาบล็อกทั้งหมดในพื้นที่ทํางาน บล็อกสามารถจัดเรียงตามตำแหน่งได้โดยตัวเลือกจากบนลงล่าง (มีการให้น้ำหนัก LTR หรือ RTL เล็กน้อย)
getAudioManager() ดาวน์โหลดโปรแกรมจัดการเสียงสำหรับพื้นที่ทำงานนี้
getBlockById(id) หาการบล็อกในพื้นที่ทำงานนี้ด้วยรหัสที่ระบุ
getBlocksBoundingBox() คำนวณกรอบล้อมรอบสำหรับบล็อกบนพื้นที่ทำงาน ระบบพิกัด: พิกัดพื้นที่ทำงาน
getBubbleCanvas() รับองค์ประกอบ SVG ที่สร้างพื้นผิวลูกโป่ง
getButtonCallback(key) รับฟังก์ชันเรียกกลับที่เชื่อมโยงกับคีย์ที่ระบุสำหรับการคลิกปุ่มและป้ายกำกับได้อย่างรวดเร็ว
getCanvas() รับองค์ประกอบ SVG ที่สร้างพื้นผิวของภาพวาด
getComponentManager() รับตัวจัดการคอมโพเนนต์สำหรับพื้นที่ทำงานนี้
getCursor() เคอร์เซอร์ของพื้นที่ทำงานนี้
getDragTarget(e) แสดงผลเป้าหมายการลากที่เหตุการณ์ตัวชี้สิ้นสุดลง
getFlyout(opt_own) Getter สำหรับฟลายเอตที่เชื่อมโยงกับพื้นที่ทำงานนี้ Flyout นี้อาจเป็นของกล่องเครื่องมือหรือพื้นที่ทำงานก็ได้ ทั้งนี้ขึ้นอยู่กับการกำหนดค่ากล่องเครื่องมือ โดยจะเป็น Null หากไม่มีการแสดงเส้นทาง
getGrid() รับออบเจ็กต์ตารางกริดสำหรับพื้นที่ทำงานนี้ หรือ Null หากไม่มี
getInverseScreenCTM() Getter สำหรับ CTM หน้าจอกลับสี
getMarkerManager() ดาวน์โหลดเครื่องมือจัดการเครื่องหมายสำหรับพื้นที่ทำงานนี้
getMetricsManager() รับตัวจัดการเมตริกสำหรับพื้นที่ทำงานนี้
getParentSvg() รับองค์ประกอบ SVG ที่มีพื้นที่ทำงานนี้ หมายเหตุ: เราถือว่านี่เป็นการเรียกหลังจากที่แทรกพื้นที่ทำงานลงใน DOM แล้วเท่านั้น
getRenderer() รับตัวแสดงผลบล็อกที่แนบกับพื้นที่ทำงานนี้
getRootWorkspace()
getScale() รับตัวคูณการซูมของพื้นที่ทำงาน หากพื้นที่ทำงานมีระดับบนสุด เราจะเรียกใช้รายการหลักเพื่อปรับขนาดพื้นที่ทำงาน
getSvgGroup() แสดงผลกลุ่ม SVG สำหรับพื้นที่ทำงาน
getTheme() รับออบเจ็กต์ธีมพื้นที่ทำงาน
getToolbox() ตัวเรียกสำหรับกล่องเครื่องมือที่เชื่อมโยงกับพื้นที่ทำงานนี้ หากมี
getToolboxCategoryCallback(key) รับฟังก์ชันเรียกกลับที่เชื่อมโยงกับคีย์ที่ระบุสำหรับป้อนข้อมูลหมวดหมู่กล่องเครื่องมือที่กำหนดเองในพื้นที่ทำงานนี้
getTopBlocks(ordered) ค้นหาบล็อกระดับบนสุดและส่งคืน บล็อกสามารถจัดเรียงตามตำแหน่งได้โดยตัวเลือกจากบนลงล่าง (มีการให้น้ำหนัก LTR หรือ RTL เล็กน้อย)
getTopBoundedElements() ค้นหาองค์ประกอบที่มีขอบเขตระดับสูงสุด แล้วแสดงผลองค์ประกอบเหล่านั้น
getWidth() แสดงผลออฟเซ็ตแนวนอนของพื้นที่ทำงาน ใช้สำหรับความเข้ากันได้กับ LTR/RTL ใน XML
hideChaff(onlyClosePopups) ปิดเคล็ดลับเครื่องมือ เมนูตามบริบท ตัวเลือกแบบเลื่อนลง ฯลฯ
hideComponents(onlyClosePopups) ซ่อนคอมโพเนนต์ที่ซ่อนอัตโนมัติได้ (เช่น Flyout, ถังขยะ และคอมโพเนนต์ที่ผู้ใช้ลงทะเบียน)
highlightBlock(id, opt_state) ไฮไลต์หรือเลิกไฮไลต์บล็อกในพื้นที่ทำงาน การไฮไลต์แบบบล็อกมักจะใช้เพื่อทำเครื่องหมายการบล็อกที่ดำเนินการอยู่ในปัจจุบัน
isDraggable() พื้นที่ทำงานนี้ลากได้ใช่ไหม
isDragging() ผู้ใช้กำลังลากบล็อกหรือเลื่อนโฟลเดอร์ออก/พื้นที่ทำงานหรือไม่
isMovable()

พื้นที่ทำงานนี้ย้ายได้ไหม

ซึ่งหมายความว่าผู้ใช้สามารถเปลี่ยนตำแหน่งพิกัด X Y ของพื้นที่ทำงานผ่านการป้อนข้อมูลได้ ซึ่งอาจทำได้ผ่านแถบเลื่อน ล้อเลื่อน การลาก หรือผ่านการซูมด้วยล้อเลื่อนหรือการบีบนิ้ว (เนื่องจากการซูมจะอยู่ตรงกลางตำแหน่งของเมาส์) ซึ่งไม่รวมถึงการซูมด้วยการควบคุมการซูม เนื่องจากพิกัด X Y จะถูกกำหนดแบบเป็นโปรแกรม

isMovableHorizontally() พื้นที่ทำงานนี้เคลื่อนย้ายในแนวนอนได้ไหม
isMovableVertically() พื้นที่ทำงานนี้ย้ายในแนวตั้งได้ไหม
isVisible() Getter สำหรับ isVisible
markFocused() ทำเครื่องหมายพื้นที่ทำงานนี้เป็นพื้นที่ทำงานหลักที่โฟกัสอยู่ในปัจจุบัน
moveDrag(e) ติดตามการลากออบเจ็กต์ในพื้นที่ทำงานนี้
newBlock(prototypeName, opt_id) รับบล็อกที่สร้างขึ้นใหม่
วาง(รัฐ) วางบล็อกหรือความคิดเห็นในพื้นที่ทํางานที่ระบุลงในพื้นที่ทํางาน ไม่ได้ตรวจสอบว่ามีความจุเหลืออยู่สำหรับออบเจ็กต์หรือไม่ ซึ่งควรดำเนินการก่อนเรียกใช้เมธอดนี้
recordDragTargets() สร้างรายการพื้นที่ลบทั้งหมดสำหรับพื้นที่ทำงานนี้
refreshTheme() รีเฟรชบล็อกทั้งหมดในพื้นที่ทํางานหลังจากอัปเดตธีม
registerButtonCallback(key, func) ลงทะเบียนฟังก์ชันเรียกกลับที่เชื่อมโยงกับคีย์หนึ่งๆ สำหรับการคลิกปุ่มและป้ายกำกับได้อย่างรวดเร็ว ตัวอย่างเช่น ปุ่มที่ระบุโดย XML ควรจับคู่โดยการเรียกใช้ reportButtonCallback("CREATE_VARIABLE", yourCallbackFunction)
registerToolboxCategoryCallback(key, func) ลงทะเบียนฟังก์ชันเรียกกลับที่เชื่อมโยงกับคีย์ที่ระบุสำหรับป้อนข้อมูลหมวดหมู่กล่องเครื่องมือที่กำหนดเองในพื้นที่ทำงานนี้ ดูตัวแปรและหมวดหมู่กระบวนการเป็นตัวอย่าง
removeButtonCallback(key) นำโค้ดเรียกกลับออกเมื่อมีการคลิกปุ่มที่ปรากฏขึ้นทันที
removeToolboxCategoryCallback(key) ลบการเรียกกลับสำหรับการคลิกบนชื่อหมวดหมู่ที่กำหนดเองในกล่องเครื่องมือ
removeTopBlock(block) นำการบล็อกออกจากรายการบล็อกยอดนิยม
removeTopBoundedElement(element) นำองค์ประกอบที่มีขอบเขตออกจากรายการองค์ประกอบที่มีขอบเขตบน
removeTopComment(comment) นำความคิดเห็นออกจากรายการความคิดเห็นยอดนิยม
renameVariableById(id, newName) เปลี่ยนชื่อตัวแปรโดยอัปเดตชื่อตัวแปรในแมปตัวแปร อัปเดตแฟล็กเอาต์เพื่อแสดงตัวแปรที่เปลี่ยนชื่อทันที
Render() แสดงผลบล็อกทั้งหมดในพื้นที่ทำงาน
resize() ปรับขนาดและตำแหน่งพื้นที่ทำงานทั้งหมดของ Chrome (กล่องเครื่องมือ ถังขยะ แถบเลื่อน ฯลฯ) โดยควรเรียกใช้เมื่อมีการเปลี่ยนแปลงที่ต้องคำนวณขนาดและตำแหน่งของถังขยะ การซูม กล่องเครื่องมือ ฯลฯ ใหม่ (เช่น การปรับขนาดหน้าต่าง)
scrollCenter() จัดพื้นที่ทำงานให้อยู่กึ่งกลาง
setResizeHandlerWrapper(handler) บันทึกข้อมูลตัวแฮนเดิลการปรับขนาดเพื่อให้เราลบข้อมูลออกในภายหลังได้
setResizesEnabled(enabled) อัปเดตว่าพื้นที่ทํางานนี้เปิดใช้การปรับขนาดหรือไม่ หากเปิดใช้ พื้นที่ทำงานจะปรับขนาดตามความเหมาะสม หากปิดใช้ พื้นที่ทำงานจะไม่ปรับขนาดจนกว่าจะเปิดใช้อีกครั้ง ใช้เพื่อหลีกเลี่ยงการปรับขนาดในระหว่างการดำเนินการแบบกลุ่มเพื่อประสิทธิภาพ
setScale(newScale) กำหนดปัจจัยการซูมของพื้นที่ทำงาน
setTheme(theme) ตั้งค่าออบเจ็กต์ธีมพื้นที่ทำงาน หากไม่มีธีมใดที่ผ่านการตรวจสอบ ค่าเริ่มต้นคือธีม Classic
setVisible(isVisible) สลับการเปิดเผยพื้นที่ทำงาน ขณะนี้ใช้สำหรับพื้นที่ทำงานหลักเท่านั้น
startDrag(e, xy) เริ่มติดตามการลากออบเจ็กต์ในพื้นที่ทำงานนี้
แปล(x, y) แปลพื้นที่ทำงานนี้เป็นพิกัดใหม่
updateInverseScreenCTM() ทำเครื่องหมาย CTM บนหน้าจอกลับด้านว่าสกปรก
updateToolbox(toolboxDef) แก้ไขแผนผังบล็อกในกล่องเครื่องมือที่มีอยู่
ซูม(x, y, จำนวน) ซูมพื้นที่ทำงานเข้าหรือออกโดยสัมพันธ์กับ/จัดกึ่งกลางตามพิกัด (x, y) ที่ระบุ
zoomCenter(type) การซูมบล็อกที่อยู่กึ่งกลางของมุมมองด้วยการซูมเข้าหรือออก
ซูมToFit() ซูมบล็อกสี่เหลี่ยมให้พอดีกับพื้นที่ทำงานหากเป็นไปได้