最新消息:

【Blockly系列教程】运行生成的代码

Blockly 少儿编程 2929浏览 0评论

按下按钮时,我们希望执行与之关联的自定义代码。

在 scripts/main.js。将以下代码添加到handlePlay方法中。

首先,加载与按下的按钮关联的工作区内容:

loadWorkspace(event.target);

接下来,从该工作区生成代码:

Blockly.JavaScript.addReservedWords('code');var code =Blockly.JavaScript.workspaceToCode(Blockly.getMainWorkspace());
code +='MusicMaker.play();';

由于代码是由用户“编写”的,因此我们无法完全控制其内容。这就是为什么我们将代码添加到保留字列表中,以便如果用户的代码包含该名称的变量,它将自动重命名而不是冲突。

用户的代码将包含许多MusicMaker.queueSound调用。在我们生成的脚本结束时,添加MusicMaker.play调用以播放添加到队列中的所有声音。

最后,使用eval函数执行脚本。将它包装在try / catch中,以便将任何运行时错误记录到控制台,而不是安静地失败:

try{eval(code);}catch(error){
  console.log(error);}

最终结果应如下所示:

function handlePlay(event){
  loadWorkspace(event.target);Blockly.JavaScript.addReservedWords('code');var code =Blockly.JavaScript.workspaceToCode(Blockly.getMainWorkspace());
  code +='MusicMaker.play();';try{eval(code);}catch(error){
    console.log(error);}}

运行应用程序并尝试一下!编辑其中一个按钮以播放C4声音5次:

保存并退出编辑模式。现在,如果点击此按钮,您应该听到播放5次的C4声音。

您必须 登录 才能发表评论!