blockly > Events

เนมสเปซเหตุการณ์

ชั้นเรียน

ระดับ คำอธิบาย
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) ตั้งค่าว่าควรเพิ่มเหตุการณ์ลงในกองเลิกทำหรือไม่

อินเทอร์เฟซ

SDK โฆษณา B คำอธิบาย
AbstractEventJson
BlockBaseJson
BlockChangeJson
BlockCreateJson
BlockDeleteJson
BlockDragJson
BlockFieldIntermediateChangeJson
BlockMoveJson
BubbleOpenJson
ClickJson
CommentBaseJson
CommentChangeJson
CommentCollapseJson
CommentCreateJson
CommentDragJson
CommentMoveJson
CommentResizeJson
SelectedJson
ThemeChangeJson
ToolboxItemSelectJson
TrashcanOpenJson
VarBaseJson
VarCreateJson
VarDeleteJson
VarRenameJson
VarTypeChangeJson
ViewportChangeJson

ตัวแปร

ตัวแปร คำอธิบาย
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

ประเภทเหตุการณ์ที่ทำให้ระบบดันออบเจ็กต์กลับไปยังส่วนที่มองเห็นได้ของพื้นที่ทำงาน

โปรดอย่าสับสนกับการแตะเพื่อไม่ให้การเชื่อมต่อที่ตัดการเชื่อมต่อแล้วดูเหมือนว่ายังเชื่อมต่ออยู่