NarraLeaf

Element

所有控件方法的派生形态——Element 节点与 Self 节点的区别、创建浮窗何时提供它,以及负责接线的那个节点

Element 节点是控件方法的派生形态:它不作用于蓝图所属的那个控件,而是作用于你显式指定并连入的元素。同一个方法的 Self 节点不带目标引脚,留在它自己控件的分类里;而所有带目标的形态,无论来自哪个控件,都归到这个分类下。只要一张图需要碰它自身以外的东西,你就会用到它——一个清空文本框的按钮,一张给三个同级图片排版的 Init

它们都不会自己出现在创建浮窗里。只有当前图中已经存在一个兼容控件类型的绑定节点——Element 字面量,或者 Events 里的 Element Flush / Element Click 事件头——对应的 Element 节点才会被列出。先放绑定节点

本分类共 123 个节点:本页末尾的 Element 引用节点,加上分在另外四页里的 122 个。

  • Displayable——几何、透明度、Variant 和属性动画,外加八种控件都重复一遍的 visible / enabled。41 个节点
  • Text——nl.text 的内容、排版与效果,以及 nl.textInput 的值。27 个节点
  • List, Slider, Image——列表内容、选中项、滚动位置与条目字段;滑块数值与范围;图片资源、填充模式与裁剪。40 个节点
  • Button, Container, Switch, Frame——按钮文本与指针、容器裁剪、Switch 的开合状态,以及 Frame 展示的 Page。14 个节点

这几个数字是创建浮窗提供的数量。另有少数被取代的节点与它们写在一起、并标明已隐藏;它们不计入其中,分类总表里也不计。

约定

以下规则对每个 Element 节点都成立,包括本页和上面那四页

  • 目标通过数据引脚传入。 Displayable、Text、Button、Container、Image 和 Frame 节点把它叫作 element;List 节点用 list,Slider 节点用 slider,Text Input 节点用 textInput。它的 valueType 在 Displayable 族是裸的 element,其余都是 element:<widgetType>——正是这一点让你没法把一个 Slider 喂进 Text 节点
  • 每种节点类型在创建浮窗中只出现一项,不会按元素复制。 若图中恰好只有一个兼容的绑定来源,放置节点时会替你把目标引脚连过去;有两个或更多时,引脚留空,由你自己选
  • 只能同 Surface。 Element 字面量只能指向它自己 Surface 上的元素,运行时执行前还会再查一遍——Surface 与当前执行宿主不一致的引用会被拒绝。参见 Surfaces
  • 读节点是纯节点(Pure),写节点是 latent(会挂起执行)。 读节点在 eventfunctionmacro 图中都合法,可以给 Blueprint Value 供值;写节点只在 eventmacro 中可用,因为它们要等待宿主
  • 写入落在运行时 patch 层,不改 authored UI 文档。真正改变了值的写入会给目标元素排一次 flush;写入与当前相同的值不会,读取和滚动请求也不会
  • 在 Blueprint Value 中,读取会记录自己读了什么。 只有它真正碰过的那些元素属性发生变化时,该绑定才重新求值,而不是每次 flush 都跑一遍

目标引脚未接线、指向另一个 Surface、或者接了错误的控件类型时,两侧的失败方式并不一样。读节点返回 undefined 然后若无其事地继续;写节点抛出蓝图执行错误。Element 读节点下游的值是空的时候,先怀疑引用,再怀疑属性

引用

这个节点关心的是接线本身,而不是某个控件的属性

Element

blueprint.element.ref · Pure

所有其它 Element 节点都在等的绑定。点击卡片,Studio 会临时切到同一个 Surface 的界面编辑器;选中一个非 root 元素并确认后,节点写入 surfaceIdelementIdelementType,然后回到蓝图。一个 Element 节点可以 fan out 给任意多个读写节点

引脚方向类型说明
elementout · dataelement未绑定时是 element,绑定后变成 element:<widgetType>,例如 Text 元素是 element:nl.text。Text、Slider 这类节点接受的正是这个带类型的形态

本页目录