เนมสเปซเหตุการณ์
ชั้นเรียน
ระดับ | คำอธิบาย |
---|---|
BlockBase | คลาส Abstract สำหรับเหตุการณ์ที่เกี่ยวข้องกับบล็อก |
BlockChange | แจ้งให้ผู้ฟังทราบเมื่อองค์ประกอบบางอย่างของบล็อกมีการเปลี่ยนแปลง (เช่น ค่าในช่อง ความคิดเห็น ฯลฯ) |
BlockCreate | แจ้งให้ผู้ฟังทราบเมื่อมีการสร้างบล็อก (หรือกองบล็อกที่เชื่อมต่อกัน) |
BlockDelete | แจ้งให้ผู้ฟังทราบเมื่อมีการลบบล็อก (หรือกองบล็อกที่เชื่อมต่อกัน) |
BlockDrag | แจ้งให้ผู้ฟังทราบเมื่อมีการลาก/วางบล็อกด้วยตนเอง |
BlockFieldIntermediateChange | แจ้งให้ผู้ฟังทราบเมื่อค่าของช่องของบล็อกมีการเปลี่ยนแปลง แต่การเปลี่ยนแปลงยังไม่เสร็จสมบูรณ์ และคาดว่าจะมีเหตุการณ์การเปลี่ยนแปลงบล็อกตามมา |
BlockMove | แจ้งผู้ฟังเมื่อมีการย้ายบล็อก ซึ่งอาจเป็นการเชื่อมต่อหนึ่งไปยังอีกการเชื่อมต่อหนึ่ง หรือจากตำแหน่งหนึ่งในพื้นที่ทำงานไปยังอีกตำแหน่งหนึ่ง |
BubbleOpen | คลาสสําหรับกิจกรรมเปิดบับเบิล |
การคลิก | แจ้งให้ผู้ฟังทราบว่ามีการคลิกองค์ประกอบแบบบล็อก |
CommentBase | คลาส Abstract สำหรับเหตุการณ์ความคิดเห็น |
CommentChange | แจ้งให้ผู้ฟังทราบว่าเนื้อหาของความคิดเห็นใน Workspace มีการเปลี่ยนแปลง |
CommentCollapse | |
CommentCreate | แจ้งให้ผู้ฟังทราบว่ามีการสร้างความคิดเห็นในเวิร์กスペースแล้ว |
CommentDelete | แจ้งให้ผู้ฟังทราบว่าความคิดเห็นใน Workspace ถูกลบแล้ว |
CommentDrag | แจ้งให้ผู้ฟังทราบเมื่อมีการลาก/วางความคิดเห็นด้วยตนเอง |
CommentMove | แจ้งให้ผู้ฟังทราบว่าความคิดเห็นในเวิร์กスペースย้ายแล้ว |
CommentResize | แจ้งให้ผู้ฟังทราบว่ามีการปรับขนาดความคิดเห็นใน Workspace แล้ว |
FinishedLoading | แจ้งให้ผู้ฟังทราบเมื่อเวิร์กスペースทำการแปลงซีเรียลจาก JSON/XML เสร็จแล้ว |
เลือกแล้ว | คลาสสําหรับเหตุการณ์ที่เลือก แจ้งให้ผู้ฟังทราบว่ามีการเลือกองค์ประกอบใหม่ |
ThemeChange | แจ้งให้ผู้ฟังทราบว่าธีมพื้นที่ทำงานมีการเปลี่ยนแปลง |
ToolboxItemSelect | แจ้งให้ Listeners ทราบว่ามีการเลือกรายการในกล่องเครื่องมือ |
TrashcanOpen | แจ้งให้ผู้ฟังทราบเมื่อถังขยะเปิดหรือปิด |
UiBase | คลาสพื้นฐานสําหรับเหตุการณ์ UI เหตุการณ์ UI คือเหตุการณ์ที่ไม่จำเป็นต้องส่งผ่านเครือข่ายเพื่อให้การแก้ไขสำหรับผู้ใช้หลายคนทำงานได้ (เช่น การเลื่อนพื้นที่ทํางาน การซูม การเปิดหมวดหมู่กล่องเครื่องมือ) เหตุการณ์ UI ไม่สามารถเลิกทำหรือทำซ้ำได้ |
VarBase | คลาส Abstract สำหรับเหตุการณ์แบบตัวแปร |
VarCreate | แจ้งให้ผู้ฟังทราบว่ามีการสร้างรูปแบบตัวแปรแล้ว |
VarDelete | แจ้งให้ผู้ฟังทราบว่ามีการลบรูปแบบตัวแปรแล้ว |
VarRename | แจ้งให้ผู้ฟังทราบว่ามีการเปลี่ยนชื่อรูปแบบตัวแปร |
VarTypeChange | แจ้งให้ Listeners ทราบว่าประเภทของตัวแปรมีการเปลี่ยนแปลง |
ViewportChange | แจ้งให้ Listeners ทราบว่าตำแหน่งหรือมาตราส่วนของพื้นผิวของพื้นที่ทำงานมีการเปลี่ยนแปลง ไม่แจ้งเตือนเมื่อพื้นที่ทำงานปรับขนาดเอง |
คลาสนามธรรม
คลาสนามธรรม | คำอธิบาย |
---|---|
บทคัดย่อ | คลาส Abstract สำหรับเหตุการณ์ |
การแจงนับ
การแจงนับ | คำอธิบาย |
---|---|
BubbleType | |
ClickTarget |
ฟังก์ชัน
ฟังก์ชัน | คำอธิบาย |
---|---|
clearPendingUndo() | แก้ไขเหตุการณ์เลิกทำที่รอดำเนินการเพื่อไม่ให้เหตุการณ์ดังกล่าวปรากฏในกองเลิกทำเมื่อมีการเรียกใช้ เรียกโดย Workspace.clearUndo |
disable() | หยุดส่งเหตุการณ์ การเรียกใช้ฟังก์ชันนี้ทุกครั้งต้องเรียกใช้ enable ด้วย |
disableOrphans(event) | ตั้งค่าว่าบล็อกจะปิดใช้หรือไม่โดยขึ้นอยู่กับว่าบล็อกเชื่อมต่ออย่างถูกต้องหรือไม่ ใช้กับแอปพลิเคชันที่บล็อกทั้งหมดควรเชื่อมต่อกับบล็อกด้านบน |
enable() | เริ่มส่งเหตุการณ์ เว้นแต่ว่าเหตุการณ์จะปิดใช้อยู่แล้วเมื่อมีการเรียกใช้การปิดใช้ที่เกี่ยวข้อง |
filter(queue) | กรองเหตุการณ์ที่รอดำเนินการโดยการผสานรายการที่ซ้ำกัน นำเหตุการณ์ Null ออก และจัดเรียงเหตุการณ์ BlockChange ใหม่ ประวัติของฟังก์ชันนี้ ฟังก์ชันนี้เดิมเพิ่มไว้ในคอมมิต cf257ea5 โดยมีจุดประสงค์เพื่อลดจํานวนเหตุการณ์ทั้งหมดที่ส่งออกไปอย่างมาก ในช่วงแรก เหตุการณ์นี้มีผลกับเหตุการณ์ BlockMove เท่านั้น แต่ต่อมาก็มีการเพิ่มเหตุการณ์อื่นๆ เพิ่มโค้ดเพื่อจัดเรียงเหตุการณ์ BlockChange ที่เพิ่มในคอมมิต 5578458 ใหม่ด้วยเหตุผลที่ไม่แน่ชัด แต่น่าจะเป็นส่วนหนึ่งของความพยายามที่ประสบความสำเร็จเพียงบางส่วนในการแก้ไขปัญหาการจัดเรียงเหตุการณ์ระหว่างการเปลี่ยนรูปแบบบล็อก โค้ดนี้ควรเพิ่มไว้ที่ด้านบนของฟังก์ชันก่อนการผสานและการนำค่า Null ออก แต่เพิ่มไว้ที่ด้านล่างด้วยเหตุผลที่ตอนนี้ลืมไปแล้ว ดูการสืบสวนข้อบกพร่องเหล่านี้เพื่อพูดคุยเกี่ยวกับปัญหาพื้นฐานและความล้มเหลวบางอย่างที่เกิดขึ้นเนื่องจากการแก้ไขที่ไม่สมบูรณ์/ไม่ถูกต้อง https://github.com/google/blockly/issues/8225#issuecomment-2195751783 https://github.com/google/blockly/issues/2037#issuecomment-2209696351 ต่อมาใน PR #1205 การติดตั้งใช้งาน O(n^2) เดิมถูกแทนที่ด้วยการติดตั้งใช้งานแบบเวลาเชิงเส้น แม้ว่าจะมีการแก้ไขเพิ่มเติมในภายหลัง ในเดือนสิงหาคม 2024 เราได้ทําการเปลี่ยนแปลงที่สำคัญหลายอย่างเพื่อลดความซับซ้อน ดังนี้ ก่อนหน้านี้ฟังก์ชันนี้เรียกจาก Workspace.prototype.undo แต่การเปลี่ยนแปลงเหตุการณ์โดยฟังก์ชันนี้เป็นสาเหตุของปัญหา #7026 (โปรดทราบว่าเหตุการณ์จะรวมกันแตกต่างกันเมื่อเรียงลำดับย้อนกลับกับเรียงลำดับไปข้างหน้า) การแก้ไขที่เลือกไว้ตั้งแต่แรกสำหรับปัญหานี้คือการเพิ่มโค้ด (ใน PR #7069) ลงใน fireNow เพื่อกรอง .undoStack_ และ .redoStack_ ของเวิร์กスペースที่เพิ่งมีส่วนร่วมในการส่งเหตุการณ์ในขั้นตอนหลังการประมวลผล ดูเหมือนว่าวิธีนี้จะแก้ไขปัญหาได้ แต่เพิ่มความซับซ้อนมากขึ้นและทำให้พิจารณาวิธีการประมวลผลเหตุการณ์สำหรับการเลิกทำ/ทำซ้ำได้ยาก ดังนั้นจึงนำทั้งการเรียกจากเลิกทำและโค้ดหลังการประมวลผลออก และกำหนดให้ forward=true เป็นค่าเริ่มต้น ขณะที่เลิกใช้งานการเรียกฟังก์ชันด้วย forward=false ในขณะเดียวกัน เราได้แทนที่โค้ดที่มีข้อบกพร่องในการเรียงลําดับเหตุการณ์ BlockChange ใหม่ด้วยฟังก์ชันการทำงานเดียวกันเวอร์ชันที่ข้อบกพร่องน้อยลงในฟังก์ชันใหม่ชื่อ enqueueEvent ซึ่งเรียกใช้จาก fireInternal เพื่อให้มั่นใจว่าเหตุการณ์จะอยู่ในลําดับที่ถูกต้องเมื่อเรียกใช้ตัวกรอง นอกจากนี้ เรายังได้แก้ไขโค้ดการผสานเหตุการณ์เพื่อให้ผสานเฉพาะเหตุการณ์ที่อยู่ติดกันเท่านั้น วิธีนี้ช่วยให้การติดตั้งใช้งานง่ายขึ้น ในขณะเดียวกันก็ช่วยให้มั่นใจว่าการผสานเหตุการณ์จะไม่ทําให้ระบบจัดเรียงเหตุการณ์ใหม่ |
fire(event) | จัดคิวเหตุการณ์ที่จะส่งไปยัง Listener การเปลี่ยนแปลง หมายเหตุ: - ระบบจะจัดคิวเหตุการณ์ไว้จนกว่าจะหมดเวลา ซึ่งโดยทั่วไปจะเกิดขึ้นหลังจากการแสดงผลเสร็จสมบูรณ์หรือเมื่อไมโครแทสก์ปัจจุบันสิ้นสุดลง หากไม่ได้ทำงานในเบราว์เซอร์ - เหตุการณ์ที่จัดคิวไว้จะได้รับการแก้ไขที่ทำลายข้อมูลโดยการรวมเข้ากับเหตุการณ์ที่จัดคิวไว้ภายหลัง แต่เฉพาะจนกว่าจะมีการเรียกใช้ - ระบบจะส่งเหตุการณ์ผ่านเมธอด fireChangeListener ในเวิร์กスペースที่ได้รับผลกระทบ |
fromJson(json, workspace) | ถอดรหัส JSON เป็นเหตุการณ์ |
get(eventType) | รับคลาสสําหรับเหตุการณ์บางประเภทจากรีจิสทรี |
getGroup() | กลุ่มปัจจุบัน |
getRecordUndo() | แสดงผลว่าระบบจะเพิ่มเหตุการณ์ลงในกองการเลิกทำหรือไม่ |
isEnabled() | แสดงผลว่าเหตุการณ์อาจเริ่มทํางานหรือไม่ |
setGroup(state) | เริ่มหรือหยุดกลุ่ม |
setRecordUndo(newValue) | ตั้งค่าว่าควรเพิ่มเหตุการณ์ลงในกองเลิกทำหรือไม่ |
อินเทอร์เฟซ
ตัวแปร
ตัวแปร | คำอธิบาย |
---|---|
BLOCK_CHANGE | |
BLOCK_CREATE | |
BLOCK_DELETE | |
BLOCK_DRAG | |
BLOCK_FIELD_INTERMEDIATE_CHANGE | |
BLOCK_MOVE | |
BUBBLE_OPEN | |
BUMP_EVENTS | รายการเหตุการณ์ที่ทำให้ระบบดันออบเจ็กต์กลับไปยังส่วนที่มองเห็นได้ของพื้นที่ทำงาน โปรดอย่าสับสนกับการแตะเพื่อไม่ให้การเชื่อมต่อที่ตัดการเชื่อมต่อแล้วดูเหมือนว่ายังเชื่อมต่ออยู่ |
เปลี่ยนแปลง | |
คลิก | |
COMMENT_CHANGE | |
COMMENT_CREATE | |
COMMENT_DELETE | |
COMMENT_DRAG | |
COMMENT_MOVE | |
COMMENT_RESIZE | |
สร้าง | |
ลบ | |
FINISHED_LOADING | |
MOVE | |
เลือกแล้ว | |
THEME_CHANGE | |
TOOLBOX_ITEM_SELECT | |
TRASHCAN_OPEN | |
UI | |
VAR_CREATE | |
VAR_DELETE | |
VAR_RENAME | |
VIEWPORT_CHANGE |
ประเภทอีเมลแทน
ชื่อแทนประเภท | คำอธิบาย |
---|---|
BumpEvent | ประเภทเหตุการณ์ที่ทำให้ระบบดันออบเจ็กต์กลับไปยังส่วนที่มองเห็นได้ของพื้นที่ทำงาน โปรดอย่าสับสนกับการแตะเพื่อไม่ให้การเชื่อมต่อที่ตัดการเชื่อมต่อแล้วดูเหมือนว่ายังเชื่อมต่ออยู่ |