跳至主要內容

setTransform

Mahiru小于 1 分钟

setTransform

设置变换与效果。

语句内容

填写变换与效果的单行 JSON 字符串。

相关信息

此命令只生成一段动画,如果您需要设置多段动画,请使用 setAnimation 或 setTempAnimation 命令。

changeFigure:character_a/normal.png -id=aaa;
; 向左移动
setTransform:{"position":{"x":-500},"saturation":0.8} -target=aaa -duration=500;
; 降低亮度
setTransform:{"brightness":0.5,"contrast":1.2} -target=aaa -duration=500;

参数

target

  • 字符串

动画作用目标。

可以填写的目标有:

  • fig-center:中间立绘
  • fig-left:左侧立绘
  • fig-right:右侧立绘
  • fig-left13、fig-right13、fig-left14、fig-right14:对应位置的立绘
  • 自由立绘的 id
  • bg-main:背景
  • stage-main:舞台
changeFigure:1/open_eyes.png -id=aaa;
setTransform:{"brightness":0.5} -target=aaa -duration=500;

duration

  • 数字
  • 范围:0 到正无穷
  • 单位:毫秒

动画的持续时间。

changeFigure:1/open_eyes.png -id=aaa;
setTransform:{"brightness":0.5} -target=aaa -duration=500;

ease

  • 字符串

填写缓动类型,控制动画的缓动效果,默认值为 easeInOut,可选值包括

  • linear:线性
  • easeIn:缓入
  • easeOut:缓出
  • easeInOut:缓入缓出
  • circIn:圆形缓入
  • circOut:圆形缓出
  • circInOut:圆形缓入缓出
  • backIn:起点回弹
  • backOut:终点回弹
  • backInOut:起止回弹
  • bounceIn:起点弹跳
  • bounceOut:终点弹跳
  • bounceInOut:起止弹跳
  • anticipate:预先反向

任何其他字符串都会回退到默认值。

changeFigure:1/open_eyes.png -id=aaa;
setTransform:{"brightness":0.5} -target=aaa -duration=500 -ease=linear;

transformFrom

  • 字符串
  • 可选值:current、default
  • 默认值:current

指定动画的变换起点,即动画中未写出的变换与效果属性如何处理。

  • current:以对象当前的变换为起点。动画只修改其中写出的属性,未写出的属性保持当前值,也不会覆盖同一对象上其他并行动画正在修改的属性。
  • default:以默认变换为起点,未写出的属性会重置为默认值。

填写此参数后,旧参数 writeDefault 将被忽略。

changeFigure:1/open_eyes.png -id=aaa;
setTransform:{"brightness":0.5} -target=aaa -duration=500 -transformFrom=default;

writeDefault

  • 布尔值

注意

此参数已不推荐使用,请改用 transformFrom:-writeDefault 等同于 -transformFrom=default。填写了 transformFrom 时,此参数会被忽略。

当值为 true 时,未被赋值的变换与效果属性都会写入默认值。
当值为 false 时,未被赋值的属性会继承现有的值。

changeFigure:1/open_eyes.png -id=aaa;
setTransform:{"brightness":0.5} -target=aaa -duration=500 -writeDefault;

keep

  • 布尔值

将该动画转换为跨语句动画。在执行接下来的语句的同时,保持播放当前动画,直至动画结束,或被下一个同目标的 setTransform setAnimation setTempAnimation 打断。
通常需要配合 next 参数一起使用。

; 假设这是一个特别长的动画
setTransform:{"scale":{"x":2,"y":2}} -target=aaa -duration=10000 -keep -next;
角色A: 第一句话;
角色A: 第二句话;
角色A: 第三句话;
; 这会打断 aaa 的跨语句动画,并播放新动画
setTransform:{"scale":{"x":1,"y":1}} -target=aaa -duration=10000 -keep -next;

parallel

  • 布尔值

与同一目标上正在播放的其他动画并行播放。

默认情况下,对同一目标执行新的 setTransform setAnimation setTempAnimation 时,会打断该目标上正在播放的动画。加上 -parallel 后,新动画不会打断已有的动画,两者同时播放。之后不带 -parallel 的动画仍会打断所有正在播放的动画,包括并行动画。

并行的动画应当修改不同的属性。如果多个并行动画修改了同一属性,最终效果无法预期。使用 -parallel 时,动画只会修改其中写出的属性。

changeFigure:1/open_eyes.png -id=aaa;
; 平移和亮度变化同时进行
setTransform:{"position":{"x":-500}} -target=aaa -duration=1000 -next;
setTransform:{"brightness":0.5} -target=aaa -duration=1000 -parallel;