高级 | Advanced
使用这些拼图可以在应用中实现高级功能,如网络、与JavaScript代码的交互、数据转换、状态保存/恢复等。
内容
- 拼图参考
- comment(注释)
- exec script(可执行脚本)
- call external function(调用外部函数)
- load data(载入数据)
- send data(发送数据)
- loaded data(已加载的数据)
- read JSON(读取JSON)
- read CSV(读取CSV)
- save state(保存状态)
- undo state(撤销状态)
- all variable names(所有变量名称)
- variable value by name(对应名称的变量的值)
- JavaScript object(JavaScript对象)
- wait promise(等待promise)
- promise值
- get procedure(获取过程)
- call procedure(调用过程)
- connector(连接器)
- add event listener(添加事件监听器)
- remove event listener(移除事件监听器)
- dispatch event(调度事件)
拼图参考
comment(注释)
这个拼图除了放置一个注释行,可用于解释拼图的含义,并不产生其他作用。此拼图同时会在 visual_logic.js 生成一行JavaScript注释。
exec script(可执行脚本)
此拼图执行指定的javascript代码。 使用 Ace编辑器 显示和编辑其中的代码内容。 请查看相关的键盘快捷键简介: 默认键盘快捷键。 可调整大小,以更改编辑器的宽度和高度。
您可以使用以下内置变量。
- app - 应用实例,详见 App 。
- v3d - 包含所有引擎模块的v3d命名空间。
- puzzles - 包含拼图中定义的过程、物理拼图中的API等的“Puzzles Logic”对象。
- VARS - 可以通过该对象访问变量拼图。
- PROC - 可以通过这个对象访问过程拼图。
关于 "Init" 和其他标签,使用内置插件的具体细节
- 如果在 Init 标签中使用了 app 内置变量, 则它不能用于此拼图, 因为在那个阶段应用尚未被正确初始化。
- 在 Init 标签中声明的变量和函数不能通过 VARS 和 PROC 从其他标签访问, 反之亦然。
call external function(调用外部函数)
执行一个在应用的JavaScript代码中指定的函数。可以选择传递参数,作为函数参数使用。
为了在JavaScript代码中添加一个函数,用任何文本编辑器打开应用 .js 文件(例如, my_awesome_app.js 位于 verge3d/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(载入数据)
试图从一个指定的位置加载数据。不管尝试是否成功,"once ready do" 槽中的拼图都会被解释。检索到的数据可以通过 加载数据 拼图进行访问。
如果请求不应被缓存,请单击齿轮图标并激活 "disable caching" 选项以禁用缓存。拼图中的缓存逻辑:当一个url第一次用于缓存——它将被缓存,并且所有后续使用缓存的url都将使用保存的缓存,如果url与禁用缓存一起使用——它既不会创建缓存也不会使用已保存的缓存。
浏览器尝试保留资产的本地副本以进行优化。 为避免浏览器缓存,每次发出请求时可以使用一个附加参数来更改 URL。 要添加此参数,请使用 set URL param(设置URL参数) 和 elapsed total(总耗时) 拼图:
send data(发送数据)
试图使用异步的 POST HTTP 请求将指定的数据发送到一个远程位置。不管尝试是否成功,"once ready do" 槽中的拼图都会被解释。如果有任何响应数据,可以通过 loaded data 拼图访问。
浏览器尝试保留资产的本地副本以进行优化。 为避免浏览器缓存,每次发出请求时可以使用一个附加参数来更改 URL。 要添加此参数,请使用 set URL param(设置URL参数) 和 elapsed total(总耗时) 拼图:
loaded data(已加载的数据)
read JSON(读取JSON)
将文本(或 数据URL)解释为 JavaScript Object Notation 数据,并以字典形式返回。
read CSV(读取CSV)
将文本(或 数据URL)解释为 逗号分隔的值。返回一个表格行的列表,每行表示为一个值的列表。分隔符可以通过下拉选择,以对应CSV文件的导出设置。"From row" 值表示从顶部开始跳过多少行。
表的行和值是通过它们的数字索引从0开始访问的。
save state(保存状态)
保存指定对象的状态和/或由其名称指定的变量值。对象被克隆并存储在内存中。变量的值被检索并存储在内存中,每个指定的变量名称都是如此。
如果此拼图被多次调用,那么这些状态将被依次保存,这样就可以通过 undo state(撤销状态) 拼图返回到之前的任一状态。
undo state(撤销状态)
恢复用 save state(保存状态) 拼图保存的对象和/或变量的状态。
如果这个拼图被多次调用,状态会从保存的序列中恢复(如果有的话),这使得我们可以从堆栈中返回到任何先前保存的状态。有时您需要解决诸如撤消历史记录中没有保存状的情况,例如在UI中进行更改等。为此,请使用状态计数器变量:
all variable names(所有变量名称)
返回一个包含拼图中使用的所有变量名称的列表。
variable value by name(对应名称的变量的值)
返回指定名称的变量的值。此拼图的工作方式与标准的变量值拼图类似,但不需要从预定义的下拉菜单中选择一个变量。
JavaScript object(JavaScript对象)
返回一个给定的JavaScript对象。
使用此拼图可获得以下JavaScript对象。
- window(窗口)
- 返回顶层的window对象作为字典值。
- arguments(参数)
- 返回当前执行的函数的参数列表。可以用来获取拼图过程的参数或者传递给拼图内部回调的额外参数(见下文)。
- this
- JavaScript中的this值。
arguments选项可以用来获取额外的拼图选项。例如,当使用 when click(当点击...时) 拼图时,您可以使用在do插槽后面被执行的回调的第一个参数来获得触发拼图逻辑的内部JavaScript事件。在下面的例子中,我们使用这一事件来获取鼠标指针的X和Y坐标。
以下拼图支持高级选项。
- when click(当点击...时), when hovered(当悬停于...时), when dragged(当拖动...时) —— 鼠标 或 触摸 事件触发 do 插槽中的拼图。
- after(在...之后), set timer(设置定时器) —— 由拼图的 setInterval(设置时间间隔) 调用返回的定时器ID。
- every frame - 间隔时间delta和总耗时。
- Event - 事件对象。
- on session event - WebXR事件对象。
wait promise(等待promise)
等待promise被解析或被拒绝,并在 promise value 拼图中返回其值(或拒绝原因)。
这个拼图可被用于获取 导出到gltf 和 generate normal map(生成法线贴图) 的值。作为一个异步拼图,这些拼图不会立即返回解析值。相反,它们会返回 promise 值,这些值在它们被用作输入的拼图中被解析。但在少数情况下,这种解析并没有发生。在这些情况下,您应该使用 wait promise 来解析promise值。
promise值
已解析的promise值(在已实现promise的情况下)或错误字符串(在已拒绝promise的情况下)。
get procedure(获取过程)
此拼图可用于获取拼图中定义的 过程 。 返回的值可以分配给一个变量或作为参数传递给另一个过程, 然后通过 call procedure(调用过程) 拼图稍后执行。
call procedure(调用过程)
执行通过get procedure 拼图获得的拼图的过程。 可选地传递要用作过程参数的参数。 “call procedure(调用过程)” 拼图有 2 种变体 - 有或没有返回值。
connector(连接器)
这个拼图可建立拼图之间的连接, 以便于移动、删除和在其他拼图中使用拼图组。 典型应用是将 load sound(加载声音) 或 load video(加载视频) 的拼图连接成一个组, 用以组织应用中预加载媒体资源。
add event listener(添加事件监听器)
为指定的事件类型添加一个监听器,即在引发指定的事件类型时执行通过get procedure 拼图获得的拼图的过程。
remove event listener(移除事件监听器)
从指定的事件类型中删除侦听器,即从事件类型侦听器中删除给定的过程。
dispatch event(调度事件)
触发指定类型的事件。 可选地传递参数(parameters)以用作过程参数(arguments),即每个过程的参数(arguments)相同。
在使用拼图时遇到困难?
欢迎您随时在 论坛上提问!您还可以加入中文用户社区QQ群(171678760),在线寻求帮助。