积木组件
积木组件是用户创建和编辑 Scratch 脚本的中央工作区。在 Bilup 中,此组件已通过改进的性能、额外功能和更好的开发者工具得到增强。
组件概述
核心功能
积木组件提供:
- 可视化编程界面:拖放积木编辑
- 语法高亮:彩色编码的积木类别
- 自动完成:智能积木建议
- 错误检测:实时脚本验证
- 性能优化:高效渲染和更新
Bilup 增强功能
- 加速模式集成:高性能积木的视觉指示器
- 高级积木类型:自定义 JavaScript 和扩展积木
- 改进的搜索:增强的积木面板搜索功能
- 自定义主题:积木工作区的主题支持
- 调试工具:集成调试和分析功能
架构
组件结构
// 简化的组件结构
const BlocksComponent = () => {
return (
<div className="blocks-wrapper">
<BlocksPalette />
<BlocksWorkspace />
<BlocksToolbox />
</div>
);
};
主要子组件
BlocksPalette
按类别显示可用积木:
const BlocksPalette = () => {
const categories = [
'motion', 'looks', 'sound', 'events',
'control', 'sensing', 'operators',
'variables', 'myBlocks'
];
return (
<div className="blocks-palette">
{categories.map(category => (
<CategorySection key={category} category={category} />
))}
</div>
);
};
BlocksWorkspace
构建脚本的主编辑区域:
const BlocksWorkspace = () => {
const { vm, isRtl, options } = useBlocksWorkspace();
useEffect(() => {
initializeWorkspace(vm, isRtl, options);
}, [vm, isRtl, options]);
return <div id="blocks-workspace" />;
};
积木类别
标准类别
运动积木
// 运动积木定义
const motionBlocks = {
'motion_movesteps': {
message0: 'move %1 steps',
args0: [{ type: 'input_value', name: 'STEPS' }],
category: 'motion',
colour: '#4C97FF'
}
// ... 更多运动积木
};
外观积木
const looksBlocks = {
'looks_sayforsecs': {
message0: 'say %1 for %2 seconds',
args0: [
{ type: 'input_value', name: 'MESSAGE' },
{ type: 'input_value', name: 'SECS' }
],
category: 'looks',
colour: '#9966FF'
}
};