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