工作区上的每个更改都会触发一个事件。这些事件充分描述了每个更改的前后状态。
工作区具有addChangeListener和removeChangeListener方法,可用于侦听事件流。一个示例是 实时生成代码。另一个示例是 最大块限制演示。通常,这两个示例都不关心触发事件是什么。他们只是查看工作区的当前状态。
一个更复杂的事件侦听器将查看触发事件。下面的示例检测用户何时创建其第一条评论,发出警报,然后停止收听,以便不再触发其他警报。
function onFirstComment(event) {
if (event.type == Blockly.Events.CHANGE &&
event.element == 'comment' &&
!event.oldValue && event.newValue) {
alert('Congratulations on creating your first comment!')
workspace.removeChangeListener(onFirstComment);
}
}
workspace.addChangeListener(onFirstComment);
块有另一种监听事件流的方法。块可以定义一个 onchange 函数,只要该块的工作区发生更改,该函数就会被调用。
所有事件共享以下公共属性。
名称 | 类型 | 描述 |
---|---|---|
type | string | Blockly.Events.CREATE,Blockly.Events.DELETE,Blockly.Events.CHANGE,Blockly.Events.MOVE,Blockly.Events.UI。 |
workspaceId | string | UUID of workspace. The workspace can be found with Blockly.Workspace.getById(event.workspaceId) |
blockId | string | UUID of block. The block can be found with workspace.getBlockById(event.blockId) |
group | string | UUID of group. Some events are part of an indivisible group, such as inserting a statement in a stack. |
块创建事件具有两个附加属性。
名称 | 类型 | 描述 |
---|---|---|
xml | object | 定义新块和任何连接的子块的XML树。 |
ids | array | 包含新块和任何连接的子块的UUID的数组。 |
块删除事件具有两个附加属性。
名称 | 类型 | 描述 |
---|---|---|
oldXml | object | 定义删除的块和任何连接的子块的XML树。 |
ids | array | 包含已删除块和任何连接的子块的UUID的数组。 |
块更改事件具有四个附加属性。
名称 | 类型 | 描述 |
---|---|---|
element | string | 'field', 'comment', 'collapsed', 'disabled', 'inline', 'mutate' |
name | string | 字段名称(如果这是对字段的更改)。 |
oldValue | value | 原始值。 |
newValue | value | 更改值。 |
块移动事件具有六个附加属性。
名称 | 类型 | 描述 |
---|---|---|
oldParentId | string | 旧父块的UUID。如果是顶级块,则未定义。 |
oldInputName | string | 旧的输入名称。如果是顶级块或父级的下一个块,则未定义。 |
oldCoordinate | object | X和Y坐标(如果它是顶级块)。如果有父级,则未定义。 |
newParentId | string | 新父块的UUID。如果是顶级块,则未定义。 |
newInputName | string | 新父项的输入名称。如果是顶级块或父级的下一个块,则未定义。 |
newCoordinate | object | X和Y坐标(如果它是顶级块)。如果有父级,则未定义。 |
变量创建事件具有两个附加属性。
名称 | 类型 | 描述 |
---|---|---|
varType | string | 变量的类型,例如“ int”或“ string”。不需要唯一。这将默认为“”,这是一种特定类型。 |
varName | string | 变量的名称。这在变量和过程中是唯一的。 |
varId | string | 变量的唯一ID。 |
变量删除事件具有两个附加属性。
名称 | 类型 | 描述 |
---|---|---|
varType | string | 变量的类型,例如“ int”或“ string”。不需要唯一。这将默认为“”,这是一种特定类型。 |
varName | string | 变量的名称。这在变量和过程中是唯一的。 |
varId | string | 变量的唯一ID。 |
变量重命名事件具有两个附加属性。
名称 | 类型 | 描述 |
---|---|---|
oldName | string | 变量的当前名称。这在变量和过程中是唯一的。 |
newName | string | 变量的新名称。这在变量和过程中是唯一的。 |
varId | string | 变量的唯一ID。 |
UI事件具有三个附加属性。
名称 | 类型 | 描述 |
---|---|---|
element | string | 'selected', 'category', 'click', 'commentOpen', 'mutatorOpen', 'warningOpen', 'theme' |
oldValue | value | 原始值。 |
newValue | value | 更改值。 |
可以预期,随着时间的流逝,由UI事件表示的UI动作列表将变得更加全面。例如scrolling, zooming, dragging bubbles, etc等事件。
PWM,英文名Pulse Width Modulation,是脉冲宽度调制缩写,它是通过调节占空比的变化来调节信号、能量等的变化。
本文介绍如何在Scratch中对EV3机器人进行开发。
本文教你一招超简单的方法,只需三步,就能将 sb3 格式作品转换成 H5,实现在移动端轻松玩!
由于Scratch软件界面显示和国内等级考试大纲用词不同,部分名词出现了两种称呼。例如指令模块(积木)、程序区(代码区),其实表达的是一个意思。
用 Scratch 代码编写了成功运行 Linux 内核的模拟器。
MicroBlocks 是受 Scratch 启发, 为「物理计算」而生的图形化编程语言。