屏蔽状态

块实例具有许多属性,用于配置它们对用户的行为方式。虽然可以在块定义中设置这些属性,但它们更常用于限制工作区中的块,以反映网域的某些属性(例如,恰好有一个“开始”事件),或集中用户的精力(例如,教程)。

可删除状态

block.setDeletable(false);

如果设置为 false,用户将无法删除相应屏蔽。在可修改的工作区中,默认情况下,块是可以删除的。

任何块(即使是无法删除的块)都可以通过编程方式删除:

block.dispose();

可编辑状态

block.setEditable(false);

如果设置为 false,用户将无法更改块的字段(例如下拉菜单和文本输入)。在可修改的工作区中,块默认可修改。

可移动状态

block.setMovable(false);

如果设置为 false,用户将无法直接移动该块。作为另一块的子块的不可移动块可能无法与该块断开连接,但如果移动父块,它也会随之移动。在可修改的工作区中,默认情况下,块是可移动的。

任何块(即使是不可移动的块)一旦位于工作区中,都可以通过编程方式移动。

block.moveBy(dx, dy)

工作区中块的起始位置默认为 (0, 0)

屏蔽数据

block.data = '16dcb3a4-bd39-11e4-8dfc-aa07a5b093db';

数据是附加到块的可选任意字符串。当块被序列化时,数据字符串也会随之序列化。这包括复制或粘贴块的情况。

通常用于将块与外部资源相关联。

序列化为 JSON 时,数据会存储为块中的顶层属性:

{
  "type": "my_block",
  "data": "16dcb3a4-bd39-11e4-8dfc-aa07a5b093db",
  // etc..
}

序列化为 XML(旧的冰盒序列化系统)时,数据字符串存储在块内的 <data></data> 标记中:

<block type="my_block">
  <data>16dcb3a4-bd39-11e4-8dfc-aa07a5b093db</data>
  <!-- etc... -->
</block>