GUI API 参考
Bilup GUI 提供对界面组件、主题、项目管理和 VM 集成的程序化访问。此 API 主要用于扩展、插件和高级集成。
核心 GUI 实例
Redux Store 访问
GUI 状态 通过 Redux 管理,可通过全局 store 访问:
// 访问 Redux store(注意:ReduxStore 中的 R 大写)
const store = window.ReduxStore;
// 获取当前状态
const state = store.getState();
// 访问 GUI 状态的不同部分
const projectState = state.scratchGui.projectState;
const targets = state.scratchGui.targets;
const projectChanged = state.scratchGui.projectChanged;
ScratchBlocks 集成
window.ScratchBlocks
访问 ScratchBlocks/Blockly 工作区(可用时):
// 访问 ScratchBlocks(可用时)
const ScratchBlocks = window.ScratchBlocks;
if (ScratchBlocks) {
// 访问主工作区
const workspace = ScratchBlocks.getMainWorkspace();
// 获取工作区中的所有积木
const blocks = workspace.getAllBlocks();
}
加载 ScratchBlocks
ScratchBlocks 由 GUI 懒加载。当打开积木标签时可用:
// ScratchBlocks 在积木加载后可用
if (window.ScratchBlocks) {
console.log('ScratchBlocks is available');
} else {
console.log('ScratchBlocks not yet loaded');
}
状态管理
Redux 状态访问
通过 Redux store 访问和修改 GUI 状态:
// 获取当前状态
const state = store.getState();
// 获取当前主题
const currentTheme = state.scratchGui.theme.theme;
// 调用动作以更改状态
store.dispatch({
type: 'scratch-gui/theme/SET_THEME',
theme: 'dark'
});
// 可用主题
const themes = ['light', 'dark', 'midnight'];