扫一扫咨询方案
首页
登录/注册

{user.username}

ID: {user.id}

模板 SDK 文档

  • 云渲染

    • Demo下载
    • SDK
    • 开发指南
    • AI API 文档
    • 开发者 API 文档
    • 控制台指南
    • 快速入门
    • 产品简介
  • 模板SDK

    • 用户常见问题
    • Demo 下载
    • 开发指南
    • 服务端 SDK
    • iOS SDK
    • 安卓端 SDK
    • 产品简介
  • 剪辑SDK

    • Demo下载
    • SDK
    • 开发指南
    • 产品简介
  • 模板制作教程

    • 模板制作进阶教程
    • 测试模板素材案例下载
    • 常见模板制作案例
    • 模板制作教程
    • 模板制作工具下载
    • 入门指南
  • 剪辑制作教程

    • 剪辑特效导出教程
    • 剪辑特效测试素材
    • 剪辑特效制作工具下载
    • 入门指南
产品简介
安卓端 SDK
iOS SDK
服务端 SDK
开发指南
Demo 下载
用户常见问题
首页 > iOS SDK > 可编辑属性

可编辑属性

更新时间 : 2023-07-18 09:32:20

可编辑属性

新增类型(SXStreamData.h)

  1. SXStreamDataType
    数据流中的数据类型,根据不同的数据类型,读取相应的值。
    比如旋转对应 SXStreamData_OneD ,则使用 NSNumber 封装;位移对应 SXStreamData_ThreeD 或 SXStreamData_ThreeD_SPATIAL,则使用容量为3的 NSArray<NSNumber *> 封装。
    //stream中可能出现的数据类型
    typedef enum : NSUInteger {
    SXStreamData_NO_DATA,
     SXStreamData_ThreeD_SPATIAL,    //三维数据,如[x,y,z] (NSArray<NSNumber *>)
     SXStreamData_ThreeD,                 //三维数据,如[x,y,z] (NSArray<NSNumber *>)
     SXStreamData_TwoD_SPATIAL,       //二维数据,如[x,y] (NSArray<NSNumber *>)
     SXStreamData_TwoD,                   //二维数据,如[x,y] (NSArray<NSNumber *>)
     SXStreamData_OneD,                   //一维数据 (NSNumber)
     SXStreamData_COLOR,                 //颜色类型数据,如[r,g,b,a] (NSArray<NSNumber *>)
     SXStreamData_STRING = 60         //字符串类型数据
    } SXStreamDataType;
    
  1. SXKeyframeData
    关键帧对象,可以读取到当前关键帧中的值,控制点,以及插值类型。
    若关键帧插值类型为SXKeyFrameOptionsPath,则有控制点数据。

  2. SXStreamData
    数据流对象,可以读取属性相应数据的类型,默认值,以及关键帧。
    若无关键帧,则属性表现为默认值,若有关键帧,属性的表现根据关键帧计算。

SXTemplate / SXTemplateTrack中新增方法

  1. 获取设计师设置的可编辑属性列表,其中包含属性和属性组。

    /**
    * 获取可修改属性组
    * json中对应key "editable_props"
    * @return 所有可修改属性
    */
    -(NSArray<SXEditableMember *> *)getEditablePropertys;
    
  2. 根据路径获取对应的数据流
    通过 getStreamsOfLayerWithUIKey 方法获取到的路径可以使用当前方法获取数据流对象,读取到当前值。

    /**
    根据路径获取对应的数据流
    @warning 该接口只有在commit之后调用有效
    @param path 数据流路径
    @return 数据流对象 
    */
    -(SXStreamData *)getStreamDataWithPath:(NSString *)path;
    
  1. 数据流数据修改相关方法
    /**
    根据路径设置数据流的默认值
    @param value 默认值
    @param path 数据流路径
    @return 设置是否成功
    */
    -(BOOL)setStreamDefaulValue:(id)value withPath:(NSString )path; 
    /**
    添加关键帧帧动画数据,如已存在对应关键帧则会修改对应的关键帧数据
    @param path 数据流路径
    @param mill 相对于start time的局部关键帧时间,单位为毫秒
    @param value 关键帧数据,不同类型的关键帧拥有不同的数据类型
    @param options 插值类型,影响自身与下一个关键帧之间的插值
    @return 数据类型错误返回false
    */
    -(BOOL)addKeyframe:(NSString )path time:(int64_t)mill value:(id)value options:(SXKeyFrameOptions)options; 
    /**
    添加关键帧帧动画数据,如已存在对应关键帧则会修改对应的关键帧
    @param path 数据流路径
    @param mill 相对于start time的局部关键帧时间,单位为毫秒
    @param value 关键帧数据,不同类型的关键帧拥有不同的数据类型
    @param inTangent 插值曲线的结束点(1,1)的控制点,影响当前帧与上一帧间的插值
    @param outTangent 插值曲线的起始点(0,0)的控制点,影响当前帧与下一帧间的插值
    @return 数据类型错误返回false 
    */
    -(BOOL)addKeyframe:(NSString )path time:(int64_t)mill value:(id)value inTangent:(CGPoint)inTangent outTangent:(CGPoint)outTangent;
    /**
    修改关键帧动画数据
    @param path 数据流路径
    @param mill 相对于start time的局部关键帧时间,单位为毫秒
    @param value 关键帧数据,不同类型的关键帧拥有不同的数据类型
    @return 数据类型错误或不存在对应关键帧返回false 
    */
    -(BOOL)setKeyframe:(NSString )path time:(int64_t)mill value:(id)value; 
    /**
    获取对应时间的插值比例x,当前数据为(a * (1 - x) + bx),a代表前一关键帧数据,b代表后一关键帧数据
    @param path 数据流路径
    @param mill 时间
    * @return 字典中包含的key @"ratio":插值比例x, @"a":前一关键帧数据, @"b":b代表后一关键帧数据
    */
    -(NSDictionary<NSString *, id> *)keyframeInterpolateRatio:(NSString *)path time:(int64_t)mill; 
    /**
    移除关键帧
    @param path 数据流路径
    @param mill 相对于start time的局部关键帧时间,单位为毫秒
    */
    -(void)removeKeyframe:(NSString )path time:(int64_t)mill; 
    /**
    清除某一类型所有关键帧
    @param path 数据流路径 
    */
    -(void)clearKeyFrames:(NSString *)path;
    

示例代码

NSArray *array = [_mTemplate getEditablePropertys];
    for (SXEditableMember *member in array) {
        if ([member isKindOfClass:[SXEditableProp class]]) {
            SXStreamData *data = [_mTemplate getStreamDataWithPath:((SXEditableProp *)member).streamPath];
               if ([path hasSuffix:@"ADBE Position"]) {
                   NSLog(@"ADBE Position Default :%@", data.defaultValue);
               }else if ([path hasSuffix:@"ADBE Rotate Z"]) {
                   NSLog(@"ADBE Rotate Z Default :%@", data.defaultValue);
                   [_mTemplate setStreamDefaulValue:@(20) withPath:path];
               }else if ([path hasSuffix:@"ADBE Scale"]) {
                   NSLog(@"ADBE Scale Default :%@", data.defaultValue);
                   [_mTemplate addKeyframe:path time:0 value:@[@(50), @(50), @(100)] options:SXKeyFrameOptionsLinear];
                   [_mTemplate addKeyframe:path time:3 * 1000 value:@[@(150), @(150), @(100)] options:SXKeyFrameOptionsLinear];
               }
        }else if ([member isKindOfClass:[SXEditableGroup class]]) {
        //组内成员属性与上面相同,分组由设计师模板中指定
//            for (SXEditableMember *member in ((SXEditableGroup *)member).editableMembers) {
//            }
        }
    }
首页 > iOS SDK > 可编辑属性
可编辑属性
更新时间 : 2023-07-18 09:32:20
  • 云渲染
    • Demo下载
    • SDK
    • 开发指南
    • AI API 文档
    • 开发者 API 文档
    • 控制台指南
    • 快速入门
    • 产品简介
  • 模板SDK
    • 用户常见问题
    • Demo 下载
    • 开发指南
    • 服务端 SDK
    • iOS SDK
    • 安卓端 SDK
    • 产品简介
  • 剪辑SDK
    • Demo下载
    • SDK
    • 开发指南
    • 产品简介
  • 模板制作教程
    • 模板制作进阶教程
    • 测试模板素材案例下载
    • 常见模板制作案例
    • 模板制作教程
    • 模板制作工具下载
    • 入门指南
  • 剪辑制作教程
    • 剪辑特效导出教程
    • 剪辑特效测试素材
    • 剪辑特效制作工具下载
    • 入门指南

可编辑属性

新增类型(SXStreamData.h)

  1. SXStreamDataType
    数据流中的数据类型,根据不同的数据类型,读取相应的值。
    比如旋转对应 SXStreamData_OneD ,则使用 NSNumber 封装;位移对应 SXStreamData_ThreeD 或 SXStreamData_ThreeD_SPATIAL,则使用容量为3的 NSArray<NSNumber *> 封装。
    //stream中可能出现的数据类型
    typedef enum : NSUInteger {
    SXStreamData_NO_DATA,
     SXStreamData_ThreeD_SPATIAL,    //三维数据,如[x,y,z] (NSArray<NSNumber *>)
     SXStreamData_ThreeD,                 //三维数据,如[x,y,z] (NSArray<NSNumber *>)
     SXStreamData_TwoD_SPATIAL,       //二维数据,如[x,y] (NSArray<NSNumber *>)
     SXStreamData_TwoD,                   //二维数据,如[x,y] (NSArray<NSNumber *>)
     SXStreamData_OneD,                   //一维数据 (NSNumber)
     SXStreamData_COLOR,                 //颜色类型数据,如[r,g,b,a] (NSArray<NSNumber *>)
     SXStreamData_STRING = 60         //字符串类型数据
    } SXStreamDataType;
    
  1. SXKeyframeData
    关键帧对象,可以读取到当前关键帧中的值,控制点,以及插值类型。
    若关键帧插值类型为SXKeyFrameOptionsPath,则有控制点数据。

  2. SXStreamData
    数据流对象,可以读取属性相应数据的类型,默认值,以及关键帧。
    若无关键帧,则属性表现为默认值,若有关键帧,属性的表现根据关键帧计算。

SXTemplate / SXTemplateTrack中新增方法

  1. 获取设计师设置的可编辑属性列表,其中包含属性和属性组。

    /**
    * 获取可修改属性组
    * json中对应key "editable_props"
    * @return 所有可修改属性
    */
    -(NSArray<SXEditableMember *> *)getEditablePropertys;
    
  2. 根据路径获取对应的数据流
    通过 getStreamsOfLayerWithUIKey 方法获取到的路径可以使用当前方法获取数据流对象,读取到当前值。

    /**
    根据路径获取对应的数据流
    @warning 该接口只有在commit之后调用有效
    @param path 数据流路径
    @return 数据流对象 
    */
    -(SXStreamData *)getStreamDataWithPath:(NSString *)path;
    
  1. 数据流数据修改相关方法
    /**
    根据路径设置数据流的默认值
    @param value 默认值
    @param path 数据流路径
    @return 设置是否成功
    */
    -(BOOL)setStreamDefaulValue:(id)value withPath:(NSString )path; 
    /**
    添加关键帧帧动画数据,如已存在对应关键帧则会修改对应的关键帧数据
    @param path 数据流路径
    @param mill 相对于start time的局部关键帧时间,单位为毫秒
    @param value 关键帧数据,不同类型的关键帧拥有不同的数据类型
    @param options 插值类型,影响自身与下一个关键帧之间的插值
    @return 数据类型错误返回false
    */
    -(BOOL)addKeyframe:(NSString )path time:(int64_t)mill value:(id)value options:(SXKeyFrameOptions)options; 
    /**
    添加关键帧帧动画数据,如已存在对应关键帧则会修改对应的关键帧
    @param path 数据流路径
    @param mill 相对于start time的局部关键帧时间,单位为毫秒
    @param value 关键帧数据,不同类型的关键帧拥有不同的数据类型
    @param inTangent 插值曲线的结束点(1,1)的控制点,影响当前帧与上一帧间的插值
    @param outTangent 插值曲线的起始点(0,0)的控制点,影响当前帧与下一帧间的插值
    @return 数据类型错误返回false 
    */
    -(BOOL)addKeyframe:(NSString )path time:(int64_t)mill value:(id)value inTangent:(CGPoint)inTangent outTangent:(CGPoint)outTangent;
    /**
    修改关键帧动画数据
    @param path 数据流路径
    @param mill 相对于start time的局部关键帧时间,单位为毫秒
    @param value 关键帧数据,不同类型的关键帧拥有不同的数据类型
    @return 数据类型错误或不存在对应关键帧返回false 
    */
    -(BOOL)setKeyframe:(NSString )path time:(int64_t)mill value:(id)value; 
    /**
    获取对应时间的插值比例x,当前数据为(a * (1 - x) + bx),a代表前一关键帧数据,b代表后一关键帧数据
    @param path 数据流路径
    @param mill 时间
    * @return 字典中包含的key @"ratio":插值比例x, @"a":前一关键帧数据, @"b":b代表后一关键帧数据
    */
    -(NSDictionary<NSString *, id> *)keyframeInterpolateRatio:(NSString *)path time:(int64_t)mill; 
    /**
    移除关键帧
    @param path 数据流路径
    @param mill 相对于start time的局部关键帧时间,单位为毫秒
    */
    -(void)removeKeyframe:(NSString )path time:(int64_t)mill; 
    /**
    清除某一类型所有关键帧
    @param path 数据流路径 
    */
    -(void)clearKeyFrames:(NSString *)path;
    

示例代码

NSArray *array = [_mTemplate getEditablePropertys];
    for (SXEditableMember *member in array) {
        if ([member isKindOfClass:[SXEditableProp class]]) {
            SXStreamData *data = [_mTemplate getStreamDataWithPath:((SXEditableProp *)member).streamPath];
               if ([path hasSuffix:@"ADBE Position"]) {
                   NSLog(@"ADBE Position Default :%@", data.defaultValue);
               }else if ([path hasSuffix:@"ADBE Rotate Z"]) {
                   NSLog(@"ADBE Rotate Z Default :%@", data.defaultValue);
                   [_mTemplate setStreamDefaulValue:@(20) withPath:path];
               }else if ([path hasSuffix:@"ADBE Scale"]) {
                   NSLog(@"ADBE Scale Default :%@", data.defaultValue);
                   [_mTemplate addKeyframe:path time:0 value:@[@(50), @(50), @(100)] options:SXKeyFrameOptionsLinear];
                   [_mTemplate addKeyframe:path time:3 * 1000 value:@[@(150), @(150), @(100)] options:SXKeyFrameOptionsLinear];
               }
        }else if ([member isKindOfClass:[SXEditableGroup class]]) {
        //组内成员属性与上面相同,分组由设计师模板中指定
//            for (SXEditableMember *member in ((SXEditableGroup *)member).editableMembers) {
//            }
        }
    }