คลาส 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() | ซูมบล็อกสี่เหลี่ยมให้พอดีกับพื้นที่ทำงานหากเป็นไปได้ |