问题标签 [blockly]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1036 浏览

blockly - Blockly 有文件选择器吗?

我希望使用 Blockly 来允许非技术用户指定测试脚本。

其中一部分需要文件选择器,但是,我看不到 Blockly 有一个。可以?

实际上,我找不到标准块的完整列表。有人有网址吗?

如果没有标准的 Blockly 文件选择器,(如何)我可以访问 Windows 文件选择器吗?(一般来说,我如何执行 DOS 命令?)

0 投票
1 回答
597 浏览

javascript - 如何使用 JS 解释器突出显示 Blockly 错误?

实际上我的要求是突出显示在其特定 js 函数中有错误的块。

我们正在使用Blockly. 假设我在 Blocky 中应用一个逻辑(函数),那么该块将解析为 js。

然后我需要逐步执行js,而执行时间。如果我的逻辑(函数)中发生任何错误,我必须在块中突出显示该错误。

是否可以获得错误的行号?

请看这个链接

0 投票
0 回答
533 浏览

python - 如何从python中的线程执行的类中停止无限循环?

我有一些字符串格式的 python 代码(Blockly 的输出),用于实例化自定义类。然后它们在线程中并发执行。这是代码的一个简单示例:

对于函数“f1”,我的实现有效,因为执行的代码不是无限循环。

但是对于函数 'f2' 和 'f3' 不起作用('f3' 将在睡眠后结束)

在寻找答案时,我发现了这个问题,它可能适用于“睡眠”,但不适用于无限循环。

有没有办法结束任何类型的代码的执行?我不介意它是杀死线程还是捕获异常。

0 投票
1 回答
2174 浏览

javascript - Blockly,检测连接/删除/拖动/释放块

我搜索了文档和官方论坛,但找不到答案。

在 Blockly 中,我想检测以下内容:

  • 当一个块连接到另一个块时;
  • 当一个块从工作空间中移除时;
  • 当工作空间为空时;
  • 当用户拖动块时;
  • 当用户释放块时;

可能吗?我只发现了一个init和一个onchange事件。

0 投票
1 回答
1341 浏览

javascript - 从用户提供的字符串生成自定义 Blockly 块,无需 eval

我正在使用 JavaScript 将字符串转换为 Google Blockly 块。

输入字符串类似于"Hello %s World"- 其中%s定义了字符串输入。我需要把它变成:

但是我不确定如何在不使用的情况下实现这一点eval(),并且由于输入字符串来自用户,我知道使用eval()不是一个好主意。

我目前的代码是:

但是我不太确定如何创建我需要的 Blockly 代码,而不是在字符串中构建 JavaScript 然后eval()在最后使用。

有人可以帮我解决这个问题吗?

0 投票
1 回答
414 浏览

jquery - Dynamically load javascript with global var

My project requires to :

  • set values to global variable
  • then load external JavaScript which uses this global variable
  • then change variable and load again same javascript while the external javascript looks as (using Google Blockly):

    /li>

and the global variable is block_name it seems that since i pass there variable it is only passed variable and not its value. So if I call the javascript twice and load it to some HTML, it seems that both blocks looks same.

probably the way I load the javascript is not important, I tried:

and also via AJAX and then load it to HTML between <script> tag.

so the imported code then looks like:

while first block is with name = B and second also, while first should be A and second B. Fun part comes when you use the block with name A it works, so the system knows block with name A, but displays with name B.

It is also possible that while they are loaded asynchronously, the global variable is half filled with A and becomes B while the functions behind method .Blocks takes over and registers it as B...

But by now I want to make sure that there is no problem with passing global variable to imported javascript as I do... And am open to any suggestions since my creativity is pretty gone already with this case...

0 投票
1 回答
1469 浏览

javascript - Blockly 上的“未捕获的类型错误:无法设置属性...”

我开始在 Blockly 上编码,但是当我尝试创建新块时遇到问题。我做的步骤:

  • 下载Blockly应用程序代码
  • 我将所有文件放在一个名为Blockly.
  • 我在该文件夹中创建了一个新的 html 文件,以查看工具箱是否工作正常。
  • 我用Block Factory创建了两个新块。
  • 我尝试使用新customBlocks.js文件将这些新块添加到工具箱中。

当我尝试进行第四步时出现问题,因为我添加了两个新块,但它只显示在工具箱上我在 js 上的第一个,而不是第二个,块的顺序无关紧要,只有第二个永远不会正确显示。

这是我的html文件:

这是我的customBlocks.js文件:

我可以看到它在控制台上给了我以下错误Google Chrome

未捕获的类型错误:无法设置未定义的属性“move_right”

我被困在这里,我无法弄清楚问题是什么。任何帮助,将不胜感激。

PS:不要关注块的逻辑,因为我还没有完成它们,但我想在完成逻辑之前看到两个块都能正确显示。

提前致谢!

0 投票
2 回答
4308 浏览

javascript - 如何使用 Javascript 制作 Blockly 块的实例?

BlocklycustomBlocks.js文件中完成了以下块:

div根据您在其上设置的像素数量,将 a向右移动。您必须在math_number块内放置一个块move_right以放置要移动的像素数量。

我的html文件中有一个workspace注入的变量Blockly workspace

我想做的事

它是在块已显示在 Blockly 的工作区上时从 JavaScript 中检索此数量的像素,而不是之前。

我试过的

  • 我直接尝试从我的兄弟(谷歌浏览器)的控制台访问该workspace变量,并且可以获得“子块”但不是它们的值。如下:

    /li>
  • 我还尝试将工作区转换为 dom,然后转换为文本:

    在这里我可以看到“子块”的值,我的意思是math_number块,它存储在文本中,但我不知道如何获取它。

为什么我要实现这一目标?

因为我想要的是检查用户是否向右移动了 300 像素。如果是这样,那么我将显示一条消息,其中我将输入“你明白了!”。

我的问题

是否有可能制作我放在工作区上的那个 Block 的实例,然后使用该实例访问它的像素值?

编辑:

我也可以获得left@Oriol所说的价值:

但我没有把它放在这里,因为它使用的属性Jquery(这根本不重要,因为它也是一个不错的选择,但不是预期的那样)。Block我的意图是在将它放在之后获取一个实例,Blockly workspace以便以后随时使用它。

0 投票
3 回答
3117 浏览

css - 是否有另一种方法来调整 Blockly 工作区的大小?

我正在尝试调整我的Blockly workspace内部 div。我希望如果页面变小,div 和它的Blockly workspace内部也会变小。

我知道它的文档Google中提供了一种方法,但我认为它有点“脏”,你必须使用大量代码来调整它的大小。

查看Google Chrome我看到的调试器,我可以将 a 设置max-heightsvg对象,但我不知道height在注入工作区时如何更改它:

无论如何,它根本不会解决我的问题(只是避免在调整页面大小之前工作区比 div 大)。

我也尝试改变我blocklyDiv注入的地方Blockly workspacedisplay: flex;但它并没有改变任何东西。

有没有比Google's示例更好的方法来调整大小Blockly workspace

提前致谢!

0 投票
0 回答
85 浏览

javascript - 将 JavaScript 隐式包含集成到 AngularJS 部分视图中

我正在尝试创建一个使用Google Blockly的 AngularJS 应用程序,在我的应用程序中使用一些部分视图。

尝试在 Angular 中设置 Blockly 的 JS 依赖项,我注意到 Blockly 框架的核心 JS 库将动态依赖项(使用document.write(".....")调用)添加到扮演其主视图角色的 HTML 文件中。

如果我想将 Blockly 编辑器主视图设置为部分视图,这是非常有问题的,因为这些 JavaScript 导入将被添加到部分视图中,而 Angular 将无法正确包含它们,因为它们将不在主index.html文件中。

我的猜测是我应该以不同的方式处理这个问题,但我不确定如何——对 AngularJS 来说是新手。通过研究,我发现有一些 JS 模块加载管理的框架,例如RequireJS,但他们似乎没有这样的动态导入管理方式。对此有什么建议吗?先感谢您。