高级 | Advanced

使用这些拼图可以在应用中实现高级功能,如网络、与JavaScript代码的交互、数据转换、状态保存/恢复等。

高级可视化编程块

内容

拼图参考

comment(注释)

这个拼图除了放置一个注释行使脚本更容易理解外,不产生其他作用。此拼图同时会在 visual_logic.js 生成一行JavaScript注释。

注释可视化编程块

exec script(可执行脚本)

此拼图执行指定的JavaScript代码。使用 Ace编辑器 显示和编辑其中的代码内容。请查看相关的键盘快捷键:默认键盘快捷键。可调整大小,以更改编辑器的宽度和高度。

您可以使用以下内置变量:

执行JavaScript的可视化编程块

关于 "Init" 和其他标签使用内置变量的具体细节

call external function(调用外部函数)

执行一个在应用的JavaScript代码中指定的函数。可以选择传递参数,作为函数参数使用。

调用外部函数可视化编程块

为了在JavaScript代码中添加一个函数,用任何文本编辑器打开应用 .js 文件(例如,my_awesome_app.js 位于 applications 文件夹下的 my_awesome_app 文件夹中)。搜索 prepareExternalInterface 并在该声明中添加您的函数(在大括号之间),这样它看起来像这样:

function prepareExternalInterface(app) { app.ExternalInterface.myJSFunction = function(numericArg, textArg) { alert('Got some params from Puzzles: ' + numericArg + ' and ' + textArg); } }

load data(载入数据)

从指定位置加载数据。检索到的数据可以通过 loaded data(已加载的数据) 拼图进行访问。JSON对象会自动转换为字典,所有其他数据类型以文本值返回。

通过网络获取数据的可视化编程块

默认情况下,此拼图检索的结果会被缓存,因此后续调用会返回相同的值。要禁用缓存,请单击齿轮图标并激活 disable caching 复选框。enable "on error" slot 设置用于通过附加的 on error do 槽来处理错误。

载入数据拼图的参数

send data(发送数据)

使用异步 POST HTTP 请求将指定数据发送到远程位置。检索到的数据可以通过 loaded data(已加载的数据) 拼图进行访问。JSON对象(发送或接收的)会自动转换为字典form data(表单数据) 值按原样发送,所有其他数据类型以文本值发送/接收。

通过网络发送数据的可视化编程块

enable "with headers" slot 用于通过字典对象提供额外的请求头。enable "on error" slot 设置用于通过附加的 on error do 槽来处理错误。

发送数据拼图的参数

请注意,浏览器可能会出于优化目的保留检索到的资产的本地副本。为避免浏览器缓存,可以使用一个附加参数在每次发出请求时更改URL。要添加此参数,请使用 set URL param(设置URL参数)elapsed total(总耗时) 拼图:

解决浏览器缓存问题

loaded data(已加载的数据)

返回由 load data(载入数据)send data(发送数据) 拼图获取的数据。

已加载数据可视化编程块

read JSON(读取JSON)

将文本(或 数据URL)解释为 JavaScript对象表示法 数据,以字典形式返回。

读取JSON可视化编程块

read CSV(读取CSV)

将文本(或 数据URL)解释为逗号分隔值。返回一个表格行的列表,每行表示为一个值的列表。分隔符可以通过下拉选择,以对应CSV文件的导出设置。from row 值表示从顶部开始跳过多少行。

读取CSV可视化编程块

表的行和值通过它们的数字索引从 0 开始访问。

读取CSV示例

connector(连接器)

此拼图便于将其他拼图相互连接,使其更方便移动、删除和在其他拼图中使用。最典型的应用是将 load sound(加载声音)load video(加载视频) 拼图连接成一个组,以组织应用中媒体资源的预加载。

连接器可视化编程块

connector (slot-based)(基于插槽的连接器)

此拼图便于将其他拼图相互连接,使其更方便移动、删除、注释以及在中使用。

基于插槽的连接器可视化编程块

save state(保存状态)

保存指定对象的状态和/或由其名称指定的变量值。对象被克隆并存储在内存中。变量的值被检索并存储在内存中,每个指定的变量名称都是如此。

保存状态可视化编程块

如果此拼图被多次调用,状态将依次保存,这样就可以通过 undo state(撤销状态) 拼图返回到之前的任一状态。

undo state(撤销状态)

恢复用 save state(保存状态) 拼图保存的对象和/或变量的状态。

撤销状态可视化编程块

如果此拼图被多次调用,状态将从保存的序列中恢复(如果有的话),这使得可以从堆栈中返回到任何先前保存的状态。有时您需要处理撤销历史中没有保存状态的情况,例如在UI中进行更改。为此,请使用状态计数器变量:

保存/撤销状态示例

all variable names(所有变量名称)

返回一个包含拼图中使用的所有变量名称的列表。

获取所有变量的可视化编程块

variable value by name(对应名称的变量的值)

返回指定名称的变量的值。此拼图的工作方式与标准的变量值拼图类似,但不需要从预定义的下拉菜单中选择一个变量。

按名称获取变量的可视化编程块

JavaScript object(JavaScript对象)

返回一个给定的JavaScript对象。

处理JavaScript对象的可视化编程块

使用此拼图可获得以下JavaScript对象:

arguments

返回当前执行的函数的参数列表。可以用来获取拼图过程的参数或传递给拼图内部回调的额外参数。

例如,当使用 when clicked(当点击...时) 拼图时,您可以通过在 do 插槽后面执行的回调的第一个参数来获得触发拼图逻辑的内部JavaScript事件。在下面的例子中,我们使用这个事件来获取鼠标指针的X和Y坐标:

处理JavaScript参数

以下拼图支持高级选项:

html element

返回一个表示指定HTML元素的DOM对象的字典。这对于访问 set propertyget property 拼图尚不支持的HTML元素属性很有用。

处理JavaScript window对象
form data
获取 <form> 元素的FormData对象。例如,您可以用它来发送自定义表单到电子邮件
this
JavaScript中 this 关键字所代表的值。
window

返回顶层的 window 对象作为字典值。

处理JavaScript window对象

wait promise(等待promise)

等待promise被 resolvedrejected,并在 promise value(promise值) 拼图中返回其值(或拒绝原因)。

等待promise可视化编程块

此拼图可用于获取 export to gltf(导出到gltf)generate normal map(生成法线贴图) 拼图的值。这些拼图本质上是异步的,不会立即返回解析值。相反,它们返回 promise 值,这些值在它们被用作输入的拼图中被隐式解析。但在少数情况下,这种解析并没有发生。在这些情况下,您应该使用 wait promise 来解析promise值。

promise value(promise值)

已解析的promise值(在promise已实现的情况下)或错误字符串(在promise被拒绝的情况下)。

get procedure(获取过程)

此拼图可用于获取拼图中定义的过程。返回的值可以分配给一个变量或作为参数传递给另一个过程,然后通过 call procedure(调用过程) 拼图稍后执行。

获取过程可视化编程块

call procedure(调用过程)

执行通过 get procedure(获取过程) 拼图获得的拼图过程。可选地传递参数作为过程参数。"call procedure(调用过程)" 拼图有2种变体 — 有返回值和无返回值。

调用过程可视化编程块

add event listener(添加事件监听器)

为指定的事件类型添加一个监听器,即在引发指定的事件类型时执行通过 get procedure(获取过程) 拼图获得的拼图过程。

添加事件监听器可视化编程块

remove event listener(移除事件监听器)

从指定的事件类型中移除监听器,即从事件类型监听器中移除给定的过程。

移除事件监听器可视化编程块

dispatch event(调度事件)

触发指定类型的事件。可选地传递参数作为过程参数(即每个过程的参数相同)。

调度事件可视化编程块

在使用拼图时遇到困难?

欢迎您随时在 论坛上提问!您还可以加入中文用户社区QQ群(171678760),在线寻求帮助。