com.aliyun.svideosdk.common.struct.effect

## Class ActionBase

- java.lang.Object
- - com.aliyun.svideosdk.common.struct.effect.ActionBase

- Direct Known Subclasses:
    ActionSet, ActionShader, ActionWipe

      public abstract class ActionBase
      extends java.lang.Object

  基础动画效果类，使用动画可以在任何素材上添加效果，比如旋转、平移、透明度变化等等。
  See Also:
    `ActionFade`, `ActionRotate`, `ActionRotateBy`, `ActionRotateTo`, `ActionScale`, `ActionTranslate`, `ActionWipe`

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `ActionBase.Interpolator` v3.25.0添加 插值器
    `static class` | `ActionBase.PartParam` v3.25.0添加 局部节点动画参数
    `static class` | `ActionBase.RepeatMode`
    `static class` | `ActionBase.Scope`
    `static class` | `ActionBase.Type`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected java.lang.String` | `mAnimationConfig` 动画的config
    `protected java.lang.Long` | `mDuration` 在stream轴(播放轴)的时长
    `protected int` | `mFillAfter` 如果fillAfter为true，动画在画面结束后停留在动画最后帧
    `protected int` | `mFillBefore` 如果fillBefore未true，动画在starttime前画面停留在动画第一帧
    `protected int` | `mId` 生成的帧动画id
    `protected int` | `mInterpolatorType` 加速器类型, 详细参数请查案`ActionBase.Interpolator`
    `protected boolean` | `mIsStream` 是否对主流进行帧动画
    `protected ActionBase.PartParam` | `mPartParam` v3.25.0添加
    `protected int` | `mRepeatCount`
    `protected int` | `mRepeatMode`
    `protected int` | `mScope` v3.25.0添加
    `protected float` | `mStartOffset` 动画延迟的秒数，当startOffset > 0时， 动画的开始时间为 timelineIn + startOffset
    `protected int` | `mTargetId` 作用的目标ID
    `protected float` | `mTimelineIn` 动效相对于时间线的切入点。单位：秒，精确到小数点后4位
    `protected float` | `mTimelineOut` 动效相对于时间线的出点。单位：秒，精确到小数点后4位
    `protected ActionBase.Type` | `mType` 动画类型

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ActionBase()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `equals(java.lang.Object obj)`
    `java.lang.String` | `getAnimationConfig()` 获取动画配置
    `long` | `getDuration()` 获取动画持续时间
    `long` | `getDuration(java.util.concurrent.TimeUnit timeUnit)` 获取动画持续时间
    `int` | `getId()` 获取该帧动画的id，唯一资源标识符
    `java.lang.String` | `getResId()` 获取资源id
    `long` | `getStartTime()` 获取时间
    `long` | `getStartTime(java.util.concurrent.TimeUnit timeUnit)` 获取时间
    `int` | `getTargetId()` 获取目标id
    `float` | `getTimelineIn()` 获取相动画的切入点时间
    `float` | `getTimelineOut()` 获取动效相对于时间线的切出点时间
    `ActionBase.Type` | `getType()` 获取帧动画类型
    `boolean` | `isStream()` 该帧动画是否作用于主流
    `void` | `setAnimationConfig(java.lang.String animationConfig)` Deprecated.
    `void` | `setDuration(long durationUs)` 设置动画时长
    `void` | `setDuration(long duration, java.util.concurrent.TimeUnit timeUnit)` 设置动画时长
    `void` | `setFillAfter(boolean aFillAfter)` v3.25.0 新增 如果fillAfter为true，动画在画面结束后停留在动画最后帧
    `void` | `setFillBefore(boolean aFillBefore)` v3.25.0 新增 如果fillBefore未true，动画在starttime前画面停留在动画第一帧
    `void` | `setId(int id)` 设置该帧动画的id，不需要用户调用
    `void` | `setInterpolatorType(ActionBase.Interpolator aInterpolator)` v3.25.0 新增 设置插值器类型, 详细参数请查案`ActionBase.Interpolator`
    `void` | `setIsStream(boolean isStream)` 设置针对主流，如果要针对主流设置帧动画，必须调用
    `void` | `setPartParam(ActionBase.PartParam aPartParam)` v3.25.0 新增 设置局部动画参数, 只有scope为`ActionBase.Scope.Part`时才有效
    `void` | `setRepeatCount(int aRepeatCount)` v3.25.0 新增
    `void` | `setRepeatMode(ActionBase.RepeatMode aRepeatMode)` v3.25.0 新增 循环模式
    `void` | `setResId(java.lang.String id)` 设置动画资源id, 用于标识动画资源的唯一性
    `void` | `setScope(ActionBase.Scope aScope)` v3.25.0 新增
    `void` | `setStartOffset(long aStartOffset)` v3.25.0 新增 设置动画延迟的微秒数，当startOffset > 0时， 动画的开始时间为 timelineIn + startOffset
    `void` | `setStartTime(long startTimeUs)` 设置动画的开始时间，
    `void` | `setStartTime(long startTime, java.util.concurrent.TimeUnit timeUnit)` 设置动画的开始时间
    `void` | `setTargetId(int id)` 设置动画作用目标ID，目标可能是某个流，也可能是某个素材，比如贴纸，字幕等等。 如果要在主流上某段时间加帧动画，则需要先获取主流的ID，可以通过`AliyunIClipManager.getAllClips()`} 获取主流列表，然后找到对应的`AliyunClip`，通过`AliyunClip.getId()` 来获取流ID，如果是素材比如动图或者贴纸，则可以通过`EffectBase.getViewId()`来获取素材ID。 另外如果是针对主流的需要`setIsStream(boolean)`设置为true，说明这个是针对主流的
    `void` | `setTimelineIn(float timelineIn)` 设置动效相对于时间线的切入点时间
    `void` | `setTimelineOut(float timelineOut)` 设置动效相对于时间线的切出点时间
    `protected void` | `setType(ActionBase.Type type)` 设置帧动画类型

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### mTargetId

          protected transient int mTargetId

      作用的目标ID

    - #### mType

          protected ActionBase.Type mType

      动画类型

    - #### mTimelineIn

          protected float mTimelineIn

      动效相对于时间线的切入点。单位：秒，精确到小数点后4位

    - #### mTimelineOut

          protected float mTimelineOut

      动效相对于时间线的出点。单位：秒，精确到小数点后4位

    - #### mScope

          protected int mScope

      v3.25.0添加

           动画作用范围
           0 ： 整体
           1 :  局部
           默认值为0

    - #### mPartParam

          protected ActionBase.PartParam mPartParam

      v3.25.0添加

           局部动画属性参数

    - #### mDuration

          protected transient java.lang.Long mDuration

      在stream轴(播放轴)的时长

    - #### mStartOffset

          protected float mStartOffset

      动画延迟的秒数，当startOffset > 0时， 动画的开始时间为 timelineIn + startOffset

    - #### mIsStream

          protected transient boolean mIsStream

      是否对主流进行帧动画

    - #### mId

          protected transient int mId

      生成的帧动画id

    - #### mFillBefore

          protected int mFillBefore

      如果fillBefore未true，动画在starttime前画面停留在动画第一帧

    - #### mFillAfter

          protected int mFillAfter

      如果fillAfter为true，动画在画面结束后停留在动画最后帧

    - #### mRepeatCount

          protected int mRepeatCount

    - #### mRepeatMode

          protected int mRepeatMode

    - #### mAnimationConfig

          protected java.lang.String mAnimationConfig

      动画的config

    - #### mInterpolatorType

          protected int mInterpolatorType

      加速器类型, 详细参数请查案`ActionBase.Interpolator`

  - ### Constructor Detail

    - #### ActionBase

          public ActionBase()

  - ### Method Detail

    - #### getAnimationConfig

          public java.lang.String getAnimationConfig()

      获取动画配置
      Returns:
        动画配置

    - #### setAnimationConfig

          @Deprecated
          public void setAnimationConfig(java.lang.String animationConfig)

      Deprecated.

           自定义动画的配置脚本，开发者可以自行配置每种动画在每一个时间刻度的具体动画值，以实现各种各样的变换速度
           配置脚本的格式是采用键值对，是以分号"；"为间隔的键值对列表，键就是时间刻度，值则分单值和双值，比如旋转角度这种只需要描述角度值，
           则使用单值，而像位移、缩放这种，需要x，y的值，则使用双值，双值的两个值之间用逗号"，"间隔，键和值之间以冒号"："间隔。
           举例：旋转角度变化的"0.0:0.123;0.1:0.245;0.3:0.798"。
           位移变化的"0.0:0.234,1.47;0.1:2.3,4.565;0.2:3.45,6.78"

      Parameters:
        `animationConfig` - 配置脚本

    - #### getType

          public ActionBase.Type getType()

      获取帧动画类型
      Returns:
        动画类型

    - #### setType

          protected void setType(ActionBase.Type type)

      设置帧动画类型
      Parameters:
        `type` - 动画类型

    - #### getStartTime

          public long getStartTime()

      获取时间
      Returns:
        单位：微秒

    - #### getStartTime

          public long getStartTime(java.util.concurrent.TimeUnit timeUnit)

      获取时间

      v3.27.0 新增

      Parameters:
        `timeUnit` - 时间单位
      Returns:
        start time

    - #### setStartTime

          public void setStartTime(long startTimeUs)

      设置动画的开始时间，
      Parameters:
        `startTimeUs` - 单位：微秒

    - #### setStartTime

          public void setStartTime(long startTime,
                                   java.util.concurrent.TimeUnit timeUnit)

      设置动画的开始时间

      v3.27.0 新增

      Parameters:
        `startTime` -
        `timeUnit` -

    - #### getDuration

          public long getDuration()

      获取动画持续时间
      Returns:
        单位 微秒

    - #### getDuration

          public long getDuration(java.util.concurrent.TimeUnit timeUnit)

      获取动画持续时间

      v3.27.0 新增

      Parameters:
        `timeUnit` - 时间单位
      Returns:
        duration

    - #### setDuration

          public void setDuration(long durationUs)

      设置动画时长
      Parameters:
        `durationUs` - 单位：微秒

    - #### setDuration

          public void setDuration(long duration,
                                  java.util.concurrent.TimeUnit timeUnit)

      设置动画时长

      v3.27.0 新增

      Parameters:
        `duration` -
        `timeUnit` - 时间单位

    - #### isStream

          public boolean isStream()

      该帧动画是否作用于主流
      Returns:
        boolean

    - #### setIsStream

          public void setIsStream(boolean isStream)

      设置针对主流，如果要针对主流设置帧动画，必须调用
      Parameters:
        `isStream` - 是否作用于主流

    - #### getTargetId

          public int getTargetId()

      获取目标id
      Returns:
        作用目标id

    - #### setTargetId

          public void setTargetId(int id)

           设置动画作用目标ID，目标可能是某个流，也可能是某个素材，比如贴纸，字幕等等。
           如果要在主流上某段时间加帧动画，则需要先获取主流的ID，可以通过AliyunIClipManager.getAllClips()}
           获取主流列表，然后找到对应的AliyunClip，通过AliyunClip.getId()
           来获取流ID，如果是素材比如动图或者贴纸，则可以通过EffectBase.getViewId()来获取素材ID。
           另外如果是针对主流的需要setIsStream(boolean)设置为true，说明这个是针对主流的

      Parameters:
        `id` - 目标ID

    - #### getId

          public int getId()

      获取该帧动画的id，唯一资源标识符
      Returns:
        唯一资源标识符

    - #### setId

          public void setId(int id)

      设置该帧动画的id，不需要用户调用
      Parameters:
        `id` - 唯一资源标识符

    - #### getResId

          public java.lang.String getResId()

      获取资源id
      Returns:
        资源id 资源唯一标识符

    - #### setResId

          public void setResId(java.lang.String id)

      设置动画资源id, 用于标识动画资源的唯一性

    - #### setScope

          public void setScope(ActionBase.Scope aScope)

      v3.25.0 新增

           动画作用范围
           ActionBase.Scope.Overall ： 整体
           ActionBase.Scope.Part :  局部 - 目前只针对字幕起作用，在字幕上会针对单个文字应用动画
           默认值为ActionBase.Scope.Overall

    - #### setPartParam

          public void setPartParam(ActionBase.PartParam aPartParam)

      v3.25.0 新增 设置局部动画参数, 只有scope为`ActionBase.Scope.Part`时才有效

    - #### setFillBefore

          public void setFillBefore(boolean aFillBefore)

      v3.25.0 新增 如果fillBefore未true，动画在starttime前画面停留在动画第一帧
      Parameters:
        `aFillBefore` -

    - #### setFillAfter

          public void setFillAfter(boolean aFillAfter)

      v3.25.0 新增 如果fillAfter为true，动画在画面结束后停留在动画最后帧
      Parameters:
        `aFillAfter` -

    - #### setRepeatCount

          public void setRepeatCount(int aRepeatCount)

      v3.25.0 新增

           动画最大循环次数，当mRepeatMode不是NONE，repeatCount才起作用。
           如果repeatCount = 0，则动画会一直循环下去。

      Parameters:
        `repeatCount` -

    - #### setRepeatMode

          public void setRepeatMode(ActionBase.RepeatMode aRepeatMode)

      v3.25.0 新增 循环模式
      Parameters:
        `aRepeatMode` -

    - #### getTimelineIn

          public float getTimelineIn()

      获取相动画的切入点时间

    - #### setTimelineIn

          public void setTimelineIn(float timelineIn)

      设置动效相对于时间线的切入点时间
      Parameters:
        `in` - 切入点时间 单位 秒

    - #### getTimelineOut

          public float getTimelineOut()

      获取动效相对于时间线的切出点时间
      Returns:
        切出点时间

    - #### setTimelineOut

          public void setTimelineOut(float timelineOut)

      设置动效相对于时间线的切出点时间
      Parameters:
        `out` - 切出点时间

    - #### setInterpolatorType

          public void setInterpolatorType(ActionBase.Interpolator aInterpolator)

      v3.25.0 新增 设置插值器类型, 详细参数请查案`ActionBase.Interpolator`
      Parameters:
        `aInterpolator` - 加速器

    - #### setStartOffset

          public void setStartOffset(long aStartOffset)

      v3.25.0 新增 设置动画延迟的微秒数，当startOffset > 0时， 动画的开始时间为 timelineIn + startOffset
      Parameters:
        `aStartOffset` -

    - #### equals

          public boolean equals(java.lang.Object obj)

      Overrides:
        `equals` in class `java.lang.Object`