首页 > 其他分享 >【Blockly开发教程】06 Workspace概念

【Blockly开发教程】06 Workspace概念

时间:2024-06-12 23:00:18浏览次数:22  
标签:06 string Blockly 用户 boolean Workspace 工具箱

文章目录

你将收获

如何配置和使用workspace。

Workspace

Workspace是什么

在Blockly中,Workspace 是一个核心功能,代表了一个用户可以操作和编程的环境,类似于vscode的文件编辑器部分。它是构建程序逻辑的画布,用户可以在其中拖拽、连接和配置各种编程块(blocks)。每个Workspace提供了一个独立的编程空间,允许用户创建和管理自己的程序结构。

Workspace组成

一个Workspace通常包含以下几个主要部分:

  • 工具箱(Toolbox):包含了一系列积木块的分类列表,用户可以从这里选择所需的块。
    在这里插入图片描述
  • 主工作区:用户将工具箱中的块拖拽到这个区域,构建程序逻辑。
    在这里插入图片描述
  • 分类抽屉(Flyout):当工具箱以抽屉形式展示时,用户可以从这里访问更多的块。
    在这里插入图片描述
    flyout中,也有一个工作区(Workspace),但是这个工作区不是主工作区,它的作用是展示积木块,而不可用于搭建程序逻辑。
    在这里插入图片描述
  • 工作区背景:提供视觉背景,帮助用户更清晰地识别和管理自己的代码结构。
  • 滚动条:如果Workspace内容超过可视区域,滚动条允许用户滚动查看全部内容。
  • 缩放控件:用户可以通过缩放控件调整Workspace的显示大小。
  • 垃圾桶:用户可以将块拖到垃圾桶图标上来删除块。
    在这里插入图片描述

Workspace作用

Workspace是Blockly编辑器的核心部件,主要作用包括:

  • 程序构建:用户通过拖拽和连接块来构建程序的逻辑结构。Workspace提供了一个直观的界面,让用户能够轻松编辑和调整代码。
  • 代码组织:用户可以在Workspace中整理和重组代码块,优化程序结构。
  • 多用户协作:在某些配置下(如需要云服务器支持),Workspace支持多用户同时工作,促进协作编程。
  • 功能扩展:通过添加插件或扩展,可以增强Workspace的功能,比如添加新的编程块或工具。
  • 序列化/反序列化:将Workspace的数据导出为文件,或导入文件来加载已保存的Workspace数据。

创建Workspace

通过Blockly.inject方法创建Workspace:

workspace = Blockly.inject('blocklyDiv', options);
  • options 在前面的文章中有提到过:
    // blockly/core/blockly_options.ts
    export interface BlocklyOptions {
         
      collapse?: boolean;	// 是否允许块的折叠以隐藏其内容。
      comments?: boolean;  	// 是否允许用户在块上添加注释。
      css?: boolean;	// 是否自动添加CSS样式到页面。
      disable?: boolean;	// 是否禁用工作区,使所有块不可编辑。
      grid?: GridOptions;	// 网格线的配置选项,如是否显示网格线和网格线的间隔。
      horizontalLayout?: boolean;	// 是否将工具箱和工作区水平布局。
      maxBlocks?: number;	// 工作区中允许的最大块数量。
      maxInstances?: {
         [blockType: string]: number};	// 特定块类型的最大实例数,以对象形式指定。
      media?: string;	// 加载媒体资源(如块定义和工具箱)的路径。
      modalInputs?: boolean;	// 是否使用模态对话框来编辑输入值。
      move?: MoveOptions;	// 块的移动选项,如是否启用拖放功能。
      oneBasedIndex?: boolean;	// 是否使用基于1的索引,默认为基于0的索引。
      readOnly?: boolean;	// 是否将工作区设置为只读模式。
      renderer?: string;	// 指定使用哪个渲染器来渲染块。
      rendererOverrides?: {
         [rendererConstant: string]: any};	// 用于覆盖特定渲染器设置的对象。
      rtl?: boolean;	// 是否启用从右到左的布局。
      scrollbars?: ScrollbarOptions | boolean;	// 工作区滚动条的行为配置,可以是一个对象或布尔值。
      sounds?: boolean;	// 是否启用声音效果。
      theme?: Theme | string | ITheme;	// 应用到Blockly编辑器的主题,可以是主题对象、主题名称的字符串或ITheme接口的实现。
      toolbox?: string | ToolboxDefinition | Element;	// 工具箱的内容,可以是一个XML字符串、工具箱定义对象或DOM元素。
      toolboxPosition?: string;	// 工具箱的位置,可以是'start'(左侧)或'end'(右侧)。
      trashcan?: boolean;	// 是否在工作区显示垃圾桶图标。
      maxTrashcanContents?: number

标签:06,string,Blockly,用户,boolean,Workspace,工具箱
From: https://blog.csdn.net/huil0925/article/details/139638505

相关文章

  • .NET周刊【6月第2期 2024-06-09】
    国内文章C#开源实用的工具类库,集成超过1000多种扩展方法https://www.cnblogs.com/Can-daydayup/p/18230586文章介绍了一个免费的C#工具类库Z.ExtensionMethods,可以通过NuGet包管理器轻松集成。该库支持.NETStandard2.0和.NETFramework4.0,包含丰富的扩展方法示例,如MD5哈希算......
  • 202406-如何使用新版本的rclone在服务器上挂载onedrive e5
    前情提要:这位老哥里面写的教程,因为rclone更新了所以有点不一样了,仅作记录在本地(带浏览器)操作Noremotesfound,makeanewone?n)Newremotes)Setconfigurationpasswordq)Quitconfign/s/q>nEnternamefornewremote.name>odOptionStorage.Typeofstorage......
  • 代码随想录算法训练营第三十六天 | 406.根据身高重建队列
    406.根据身高重建队列题目链接文章讲解视频讲解思路:  先按照身高由大到小排序,如果身高相同,比较人数(由小到大);  按照人数重构数组,将节点插入到合适的位置classSolution{private:staticboolcompareByK(vector<int>&lhs,vector<int>&rhs){if(lhs[......
  • 2024.06.02《构建之法》阅读笔记
    在以往自己书写代码的时候,每次完成一个小功能都要自己来测试一下,但是这样做的救过并不理想。因为自己写的软件,一些自己可以想到的方面都进行了解决,而一些不能解决的问题是测试也不能够解决的。但是这样写好的程序还有没有BUG呢?而且只写BUG是否容易出现?是否能够解决呢?所以,这时就应......
  • 2024.06.03
    importosimportopenpyxlimportdatetimefromtkinterimport*fromtkinterimportmessagebox#Createthemainwindowjzr=Tk()jzr.title('个人账本记录')jzr.geometry('400x600')jzr.config(bg='lightyellow')#Createatextboxtodisplay......
  • 2024.06.04《个人总结》
      (大二下)课程总结——软件工程 1)回顾你的课程计划(第一周的计划),你完成的程度如何?请列出具体数据和实际例子。  1.你在这门课的计划是什么?参考一些学校的教学,你对这个课程有什么期待?你打算怎样度过这个课程?    计划就是尽力跟上建民老师的节奏同时,还能主动学习......
  • 2024.06.05
    【题目描述】编写程序,使用牛顿迭代法求方程在x附近的一个实根。【练习要求】请给出源代码程序和运行测试结果,源代码程序要求添加必要的注释。【输入格式】请在一行中输入方程系数a、b、c、d和实数x,数据中间以空格为间隔。【输出格式】对每一组输入的数据,输出牛顿迭代法求出的实根(......
  • 2024.06.06
    完成概率论、计网作业并提交python实验:importrefromcollectionsimportCounterimportrequestsfromlxmlimportetreeimportpandasaspdimportjiebaimportmatplotlib.pyplotaspltfromwordcloudimportWordCloudheaders={"User-Agent":"Mozilla/5.0(Wi......
  • 【CMake系列】06-项目结构与输出路径管理
    为了对大型项目实现更好的管理【模块化协作开发等等】,cmake提供了很多指令,可以对项目的结构进行调整、管理,便于项目的合理规划。本文我们要学习的就是项目结构的设置,以及构建程序等输出路径的设置本专栏的实践代码全部放在github上,欢迎star!!!如有问题,欢迎留言、或加群......
  • 计算机毕业设计项目推荐,32006 node 中国传统节日介绍网站(开题答辩+程序定制+全套文案
    基于node.js中国传统节日介绍网站 摘 要随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,中国传统节日介绍网站当然也不能排除在外。中国传统节日介绍网站是以实际运用为开发背景,运用软件工程原理和开发方法,采......