NarraLeaf

表示可能オブジェクト

あらゆるビジュアルウィジェットが共有するジオメトリと外観のインターフェース——プロパティ、Appearance Variant、プロパティアニメーション

あらゆるビジュアルウィジェットは Displayable です。位置、サイズ、回転、不透明度を持ち、それらを定義しているウィジェットについては Appearance Variant も持ちます。これらのノードは、ウィジェット自身のブループリントの内部からこの共有インターフェースを読み書きするため、同じノードが Text、Image、Container のいずれに対しても機能します。

規約

  • Self ノードのみ。 このカテゴリのノードはいずれもElement入力を取りません——対象は常にブループリントを所有するウィジェットです。配線された要素に作用するバージョンは、ElementGet Element PropertySet Element Variantなどとして存在します。Stop Element AnimationElement入力を取らないにもかかわらずそちらに分類されています——AnimationTokenがすでに1つのウィジェット上の1つのアニメーションを指名しているため、他に対象を指定する必要がないからです。
  • 現れる場所。 displayable なウィジェットすべてのwidgetMainブループリントに現れます——nl.containernl.textnl.imagenl.buttonnl.textInputnl.switchnl.slidernl.listnl.framenl.videonl.puppet、および5つのステージウィジェットnl.dialog.sentencenl.notification.listnl.choice.listnl.nvl.listnl.nvl.textsSet VariantGet Variantはより限定的です——Appearance Variant を持つのはnl.containernl.textnl.imagenl.buttonのみです。
  • グラフの種類。 Getter は純粋であり、Blueprint Value の内部を含めeventfunctionmacroのいずれのグラフでも実行できます。Setter は latent であり、eventmacroでのみ実行できます。
  • 書き込みはランタイムのパッチレイヤーに反映されるのであって、作成済みの UI ドキュメントには反映されません。何も変えない書き込みは flush をキューしません。
  • 座標は Surface のデザインピクセルです——インスペクタの Position のX / Yが示すのと同じ数値です。
  • 単位。 カードは各数値フィールドの横に単位を表示します——x / y / offsetX / offsetY / width / heightpxrotationdegscalex、時間はsopacity%。不透明度を除くすべては入力されたとおりに保存されます。不透明度はカード上ではパーセンテージですが、実行時には01の小数であり、すべての Getter が返すのも01です。
  • 使用できない入力は現在の値にフォールバックします。 ブール入力はカード上のリテラルを受け付けないため、配線されていないdisplayvisibleは何にも解決されず、ノードはすでにある値をそのまま書き戻します。数値プロパティに非数値の値が来た場合も同様です。

不透明度を書き込む2つのノードは、パーセンテージの読み方が食い違っています。Animate Propertyは常にFrom / Toを100で割るため、そこでの1は1%を意味します。Set Propertyは値が1を超える場合にのみ割るため、そこでの1は完全な不透明を意味し、1%には到達できません。この非対称性は意図的なものです——不透明度を01の小数として保存していた旧図をそのまま変わらず動かし続けるためです。

Get Property

blueprint.displayable.getProperty · Pure

Get Property(プロパティの取得)は、ブループリントを所有するウィジェットの1つのプロパティを読み取ります。キーはカード上で選択するため、このノード1つで、このページの末尾にある固定の Getter 群を代替できます。

ピン方向備考
valueout · dataany形状は選択したキーに従います。

カード上のフィールド

フィールド内容
property読み取るキー。

プロパティキー

キー読み取り内容
position{ x, y }——ウィジェットの左上。
size{ width, height }
bounds{ x, y, width, height }
xy左上の各成分。数値。
offsetXoffsetY作成済みレイアウトからの視覚的なオフセット。
widthheightサイズの各成分。数値。
rotation度数。
opacity01。パーセンテージではありません。
visibleboolean

Set Property

blueprint.displayable.setProperty · Latent

Set Property(プロパティの設定)は所有ウィジェットの1つのプロパティに書き込みます。書き込み可能なキーはxyoffsetXoffsetYwidthheightrotationopacityvisibleです——positionsizeboundsは読み取り専用の集約値であり、variantキーは存在しません。バリアントには専用のノードがあるためです。

ピン方向備考
inin · exec
nextout · exec
valuein · dataany配線すると、カードの Value フィールドは無効になり、配線された値が優先されます。

カード上のフィールド

フィールド内容
property書き込むキー。
value値。valueピンが未配線のときに使われます。visibleは Visible / Hidden のドロップダウン、opacityはパーセンテージ、それ以外はすべて数値。

offsetXoffsetYは、一回限りのモーションスロットではなく、ウィジェットの永続的なランタイムトランスフォームに保存されます。そのため、後からそのウィジェットを引き継ぐアニメーションがあっても、オフセットが失われることはありません。

Get Measured Rect

blueprint.displayable.getMeasuredRect · Pure

ウィジェットが実際にどこに落ち着いたかを、ドキュメントから読み取るのではなく、描画結果から計測したものです。

これがboundsキーを指定したGet Propertyとの全ての違いです。boundsは作成済みレイアウトに、その上へ書き込まれたランタイムパッチを重ねたものであり、まだ何も描画されていないウィジェットに対しても答えを返します。こちらは Surface のデザイン座標系における実際のボックスを計測するもので、それは Container の中、List の行の中、あるいはコンポーネントインスタンスの中にあるウィジェットが実際に占めている位置です。

ピン方向備考
rectout · dataRect{ x, y, width, height }。ウィジェットが描画されていないときはnull

Get Center

blueprint.displayable.getCenter · Pure

計測された矩形の中心を、点として返します。Move Mouse To Elementが狙うのと同じ計測結果であり、移動そのものではなく点だけが欲しいときに使います。

ピン方向備考
centerout · dataVector2Dウィジェットが描画されていないときはnull

Get Display

blueprint.displayable.getDisplay · Pure

Get Display(表示状態の取得)

ピン方向備考
displayout · databoolean何かがそれ以外に設定するまではtrue

Set Display

blueprint.displayable.setDisplay · Latent

Set Display(表示状態の設定)

ピン方向備考
inin · exec
nextout · exec
displayin · databoolean

display = falseは CSS のdisplay: noneでウィジェットとそのサブツリーを非表示にしつつ、マウントは維持します。これがvisibleとの全ての違いです——visible = falseのウィジェットは、サブツリーごとレンダリングツリーから取り除かれます。

Set Variant

blueprint.displayable.setVariant · Latent

Set Variant(バリアントの設定)は、所有ウィジェットにランタイムの Appearance Variant オーバーライドを適用します。

ピン方向備考
inin · exec
nextout · exec

カード上のフィールド

フィールド内容
Variant対象のバリアント。ウィジェット自身のバリアントから名前で選択します。
Wait For AnimationNoは即座に続行します。Yesは、対象バリアント上で最も長いフィールドの transition が終わるまでNextを保留します。transition がない場合は待つものが何もありません。

variantIdのデータピンは存在せず、id を手で入力する方法もありません——カードはバリアントの内部 id を隠しフィールドとして書き込み、見えるのは常に名前だけです。Appearance Variant を持たないウィジェットに対してこのノードを実行すると、黙って何もしないのではなく、グラフ実行エラーになります。

バリアントを設定すると、既存のランタイム不透明度オーバーライドもクリアされるため、切り替え先のバリアントが不透明度を決めることになります。これにより、透明なバリアントへのSet Variantに続けてAnimate Property opacity 0 → 100を行う手法が成立します——フェードは古いオーバーライド値に固定されるのではなく、そのバリアントの透明度から始まります。

Get Variant

blueprint.displayable.getVariant · Pure

Get Variant(バリアントの取得)はパレットから非表示になっています。現在のバリアントカードより前に保存されたグラフを動かし続けるために保持されています。

ピン方向備考
variantIdout · datastring設定されていればランタイムオーバーライドの値、なければ作成時の既定値、それもなければ最初のバリアント。ウィジェットにバリアントがない場合は""

Animate Property

blueprint.displayable.animateProperty · Latent

Animate Property(プロパティのアニメーション)は1つのプロパティをトゥイーンします。これはライブラリではなくプリミティブです——Fade、Shake、Pulse といったノードは存在せず、それらはこのノードの上にマクロとして組み立てられます。

ピン方向備考
inin · exec
nextout · execアニメーションが完了したとき、または何かがそれを停止したときに発火します。
animationout · dataAnimationToken早めに打ち切るにはStop Animationに渡します。

カード上のフィールド

フィールド内容
propertyopacityoffsetXoffsetYxyscalerotationのいずれか。
from任意の開始値。空欄はウィジェットの現在のランタイム状態から始めることを意味します。
to目標値。
duration秒。既定値は0.3
delay秒。
easinglineareaseIneaseOuteaseInOutcircIncircOutcircInOutのいずれか。既定値はeaseOut
afterholdは最終値を保持し、resetは作成済みのレイアウトと外観に戻します。既定値はhold

offsetXoffsetYは、作成済みレイアウトからの視覚的なオフセットをアニメーションさせます。xyは絶対的なレイアウト位置をアニメーションさせます——holdの場合、最終的な位置はランタイムのレイアウトパッチに確定され、残っていたオフセットはクリアされるため、位置が跳ね戻ることはありません。scaleは倍率であり、1が元のサイズです。opacityはカード上ではパーセンテージです。

animationトークンは、アニメーションが開始した瞬間に、Nextが発火するより前に出力されます。このノード自身のチェーンはアニメーションが終わるまで一時停止しているため、それを止める唯一の方法は、同じブループリント内の別のチェーンが、アニメーションが進行中の間にそのピンを読み取ることです。

xyについては、From0は自分で入力した場合にのみ有効として扱われます——カードは入力したという事実そのものを記録しています。古いグラフから引き継がれた0は空欄として読み取られ、アニメーションは現在位置から始まります。これはそれらの旧図が本来意図していた挙動です。

Stop Animation

blueprint.displayable.stopAnimation · Latent

Stop Animation(アニメーションの停止)

ピン方向備考
inin · exec
nextout · exec
animationin · dataAnimationTokenAnimate PropertyまたはAnimate Element Propertyから得たトークン。

トークンが指名するその1つのアニメーションだけを停止し、それを待っているAnimate Propertyを解放します。解放された側はそこからNextを通って続行します。トークンが欠けている場合、別の種類のトークンである場合、あるいはアニメーションがすでに終わっている場合は、黙って no-op になります——いずれの場合も実行はnextを通って続行されます。

Get Position

blueprint.displayable.getPosition · Pure

Get Position(位置の取得)はGet Propertypositionキーに取って代わられています。パレットからは非表示ですが、このノードを持つグラフでは引き続き実行されます。

ピン方向備考
positionout · dataVector2D{ x, y }。ウィジェットの左上。

Get Size

blueprint.displayable.getSize · Pure

Get Size(サイズの取得)はGet Propertysizeキーに取って代わられています。パレットからは非表示ですが、このノードを持つグラフでは引き続き実行されます。

ピン方向備考
sizeout · dataVector2Dピンの型はVector2Dですが、値のキーはwidthheightです。

Get Bounds

blueprint.displayable.getBounds · Pure

Get Bounds(境界の取得)はGet Propertyboundsキーに取って代わられています。パレットからは非表示ですが、このノードを持つグラフでは引き続き実行されます。

ピン方向備考
boundsout · dataRect{ x, y, width, height }

Get Rotation

blueprint.displayable.getRotation · Pure

Get Rotation(回転の取得)はGet Propertyrotationキーに取って代わられています。パレットからは非表示ですが、このノードを持つグラフでは引き続き実行されます。

ピン方向備考
rotationout · datafloat度数。

Get Opacity

blueprint.displayable.getOpacity · Pure

Get Opacity(不透明度の取得)はGet Propertyopacityキーに取って代わられています。パレットからは非表示ですが、このノードを持つグラフでは引き続き実行されます。

ピン方向備考
opacityout · datafloat01。パーセンテージではありません。

Get Visible

blueprint.displayable.getVisible · Pure

Get Visible(可視性の取得)はGet Propertyvisibleキーに取って代わられています。パレットからは非表示ですが、このノードを持つグラフでは引き続き実行されます。

ピン方向備考
visibleout · databoolean

このページの目次