設計應用程式時,您可以從幾種模式中選擇 它會使用 Blockly慎重考慮這些資訊 因為會影響使用者需要的封鎖
設定
許多 Blockly 應用程式都會用於描述設定 而非可執行程式設定應用程式的一開始 將一個根層級區塊初始化到工作區以下何者是良好範例: Blockly 開發人員工具的「Block Factory」分頁:
Blockly.Blocks['factory_base'] = {
init: function() {
this.setDeletable(false);
this.setMovable(false);
this.setEditable(false);
// etc...
}
}
Blockly.serialization.blocks.append({'type': 'factory_base'}, workspace);
這會建立一個不可移動的不可移動區塊,容納所有 變更組態您可以隨時序列化工作區 判斷目前的設定
這類應用程式可能希望自動停用所有 均已連線至根區塊您可以用一行程式碼完成此操作:
workspace.addChangeListener(Blockly.Events.disableOrphans);
系列節目
大多數 Blockly 應用程式的設計都是為了建立序列 計畫。系統會將使用者堆疊在一起,系統會按照順序執行。
工作區中的每個 (非停用) 區塊都會成為 計畫。如果有多個區塊堆疊,越多區塊 執行狀態(如果兩個堆疊的高度大致相同, 系統會指定堆疊至左側 (在 RTL 模式中)。
您隨時可以將工作區匯出至可執行的程式碼。這組代碼 可以在 JavaScript 的用戶端中執行 (使用 eval 或 JS 翻譯版) 或伺服器端檔案 (不限語言)。
import {javascriptGenerator} from 'blockly/javascript';
var code = javascriptGenerator.workspaceToCode(workspace);
平行計畫
有些 Blockly 應用程式選擇執行 平行,而非依序執行例如音樂應用程式 就是鼓組與旋律同時演奏
為 個別封鎖:
import {javascriptGenerator} from 'blockly/javascript';
var json = Blockly.serialization.workspaces.save(workspace);
// Store top blocks separately, and remove them from the JSON.
var blocks = json['blocks']['blocks'];
var topBlocks = blocks.slice(); // Create shallow copy.
blocks.length = 0;
// Load each block into the workspace individually and generate code.
var allCode = [];
var headless = new Blockly.Workspace();
for (var i = 0; block < topBlocks.length; i++) {
var block = topBlocks[i];
blocks.push(block);
Blockly.serialization.workspaces.load(json, headless);
allCode.push(javascriptGenerator.workspaceToCode(headless));
blocks.length = 0;
}
如果指定語言是 JavaScript,則 allCode
陣列可能會
來建立多個 JS 解譯器,以便同時執行。如果
目標語言就像 Python,然後 allCode
陣列
可能會組合成使用執行緒模組的單一程式。
與任何平行程式一樣,必須審慎決定 任何共用資源,例如變數和函式
活動導向計畫
事件處理常式只是系統呼叫的函式 比程式更升級這些區塊可以包住 要執行的區塊,或者這些區塊可能位於堆疊之上的標頭 方塊。
有些開發人員喜歡加入事件區塊的頂端
它們看起來就會與其他方塊區隔開來這不是 的預設外觀
會封鎖,但可以透過覆寫轉譯器常數來新增
ADD_START_HATS
到 true
(自訂轉譯器程式碼研究室 - 覆寫常數)。
或是加入主題
並針對方塊樣式設定帽子選項更多內容
若要瞭解如何在主題中設定帽子的帽子,請參閱相關文章
請按這裡。
在事件導向模式中,同時建立處理常式也很合理 計畫開始執行在這個模型中,工作區的任何區塊都不會 系統將忽略且不會執行連線至事件處理常式。
設計使用事件的系統時,請考慮 支援多個同一事件的多個例項 處理常式。