[blockly] > [イベント]

イベントの名前空間

クラス

クラス 説明
BlockBase ブロックに関連するイベントの抽象クラス。
BlockChange ブロックの要素(フィールド値、コメントなど)が変更されたときにリスナーに通知します。
BlockCreate ブロック(またはブロックの接続されたスタック)が作成されたときにリスナーに通知します。
BlockDelete ブロック(またはブロックの接続されたスタック)が削除されたときにリスナーに通知します。
BlockDrag ブロックが手動でドラッグ/ドロップされたときにリスナーに通知します。
BlockFieldIntermediateChange ブロックのフィールドの値が変更されたが、変更がまだ完了しておらず、ブロック変更イベントが続くことが予想される場合に、リスナーに通知します。
BlockMove ブロックが移動されたときにリスナーに通知します。接続間やワークスペース内の場所間で移動できます。
BubbleOpen バブル開くイベントのクラス。
[Provider Configuration] セクションで ブロック要素がクリックされたことをリスナーに通知します。
CommentBase コメント イベントの抽象クラス。
CommentChange ワークスペースのコメントの内容が変更されたことをリスナーに通知します。
CommentCollapse
CommentCreate ワークスペースのコメントが作成されたことをリスナーに通知します。
CommentDelete ワークスペースのコメントが削除されたことをリスナーに通知します。
CommentDrag コメントが手動でドラッグ/ドロップされたときにリスナーに通知します。
CommentMove ワークスペースのコメントが移動されたことをリスナーに通知します。
CommentResize ワークスペースのコメントのサイズが変更されたことをリスナーに通知します。
FinishedLoading ワークスペースの JSON/XML からの逆シリアル化が完了したときにリスナーに通知します。
選択済み 選択したイベントのクラス。新しい要素が選択されたことをリスナーに通知します。
ThemeChange ワークスペースのテーマが変更されたことをリスナーに通知します。
ToolboxItemSelect ツールボックス アイテムが選択されたことをリスナーに通知します。
TrashcanOpen ごみ箱が開閉されたときにリスナーに通知します。
UiBase UI イベントの基本クラス。UI イベントは、マルチユーザー編集を機能させるためにワイヤーを介して送信する必要がないイベントです(ワークスペースのスクロール、ズーム、ツールボックス カテゴリの開くなど)。UI イベントは元に戻したりやり直したりできません。
VarBase 変数イベントの抽象クラス。
VarCreate 変数モデルが作成されたことをリスナーに通知します。
VarDelete 変数モデルが削除されたことをリスナーに通知します。
VarRename 変数モデルの名前が変更されたことをリスナーに通知します。
VarTypeChange 変数の型が変更されたことをリスナーに通知します。
ViewportChange

ワークスペース サーフェスの位置またはスケールが変更されたことをリスナーに通知します。

ワークスペース自体のサイズ変更は通知されません。

抽象クラス

抽象クラス 説明
概要 イベントの抽象クラス。

列挙型

列挙 説明
BubbleType
ClickTarget

関数

関数 説明
clearPendingUndo() 保留中の元に戻すイベントを変更して、イベントがトリガーされたときに元に戻すスタックに格納されないようにします。Workspace.clearUndo から呼び出されます。
disable() イベントの送信を停止します。この関数を呼び出すたびに、enable も呼び出す必要があります。
disableOrphans(event) ブロックが正しく接続されているかどうかに応じてブロックを無効にするかどうかを設定します。すべてのブロックをトップブロックに接続する必要があるアプリで使用します。
enable() イベントの送信を開始します。ただし、対応する無効化呼び出しの時点でイベントがすでに無効になっている場合は除きます。
filter(queue)

重複を統合し、null イベントを削除して BlockChange イベントを並べ替えることで、キューに登録されたイベントをフィルタします。

この機能の履歴:

この関数は、ディスパッチされるイベントの総数を大幅に削減することを目的として、commit cf257ea5 で最初に追加されました。当初は BlockMove イベントにのみ影響していましたが、時間の経過とともに他のイベントにも追加されました。

コミット 5578458 で追加された BlockChange イベントの順序を変更するコードが追加されました。理由は不明ですが、ブロックのミューテーション中のイベントの順序に関する問題を部分的に解決する試みの一環として追加されたものと思われます。このコードは、統合と 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 年 8 月に、いくつかの重要な簡素化が行われました。

この関数は以前は Workspace.prototype.undo から呼び出されましたが、この関数によるイベントの変更が問題 #7026 の原因でした(イベントは順序が逆の場合と順序が前の場合で異なる方法で結合されます)。当初、この問題の修正として、イベントのディスパッチに関与したワークスペースの .undoStack_ と .redoStack_ をポストフィルタリングする fireNow のコードが追加されました(PR #7069)。これにより問題は解決したように見えましたが、複雑さが大幅に増加し、元に戻す/やり直しのためにイベントがどのように処理されるかを判断することが困難になりました。そのため、元に戻すからの呼び出しとポスト処理コードの両方が削除され、forward=true がデフォルトになりました。forward=false で関数を呼び出すことは非推奨になりました。

同時に、BlockChange イベントの順序を変更するバグのあるコードは、fireInternal から呼び出される新しい関数 enqueueEvent の同じ機能のバグが少ないバージョンに置き換えられました。これにより、フィルタが呼び出される時点でイベントが正しい順序になるようにします。

また、イベントの統合コードが変更され、隣接するイベントのみが統合されるようになりました。これにより、イベントの統合によってイベントの順序が入れ替わることがないようにしながら、実装を簡素化できました。

fire(event)

変更リスナーにディスパッチされるイベントをキューに登録します。

注:

- イベントはタイムアウトまでキューに追加されます。通常はレンダリングの完了後、またはブラウザで実行されていない場合は現在のマイクロタスクの終了後にキューに追加されます。- キューに登録されたイベントは、後でキューに登録されたイベントと結合されることによって破壊的な変更を受ける可能性がありますが、これはイベントがトリガーされるまでの間のみです。- イベントは、影響を受けるワークスペースの fireChangeListener メソッドを介してディスパッチされます。

fromJson(json, workspace) JSON をイベントにデコードします。
get(eventType) レジストリから特定のイベントタイプのクラスを取得します。
getGroup() 現在のグループ。
getRecordUndo() イベントを元に戻すスタックに追加するかどうかを返します。
isEnabled() イベントを配信できるかどうかを返します。
setGroup(state) グループを開始または停止する。
setRecordUndo(newValue) イベントを元に戻すスタックに追加するかどうかを設定します。

インターフェース

インターフェース 説明
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
CREATE
削除
FINISHED_LOADING
MOVE
選択済み
THEME_CHANGE
TOOLBOX_ITEM_SELECT
TRASHCAN_OPEN
UI
VAR_CREATE
VAR_DELETE
VAR_RENAME
VIEWPORT_CHANGE

型エイリアス

型エイリアス 説明
BumpEvent

オブジェクトがワークスペースの表示領域に戻されるイベントのタイプ。

切断された接続が接続されているように見えるようにするバンプとは異なります。