用户自定义配置
新版本优化并完善了用户配置部分,支持更清晰、丰富、以及更细粒度的配置,旨在通过修改配置项的方式满足大部分用户的应用场景,减少不必要的代码开发,具体配置项及相关控制内容如下所示:
配置项说明
配置项主要包含以下几方面:
theme:UI 相关配置。
common:通用配置。
camera:相机页相关配置。
edit:编辑页相关配置。
export:导出页相关配置。
source:自定义资源。
说明
后续会根据用户反馈不断完善。
// 主题配置theme: {primaryColor: "rgba(255,88,76)", // 主题色textColor: "#fff", // 文字色disableColor: "#ddd", // 禁用色backgroundColor: "#000", // 整体背景色button: { // 按钮配置default: { // 默认状态backgroundColor: "#ff584c",textColor: "#fff"},disable: { // 禁用状态backgroundColor: "#ddd",textColor: "#fff"}}},// 通用配置common: {clipMaxDuration: 60, // 裁切时长的默认限制clipMinDuration: 1, // 裁切时长最短限制chooseMaxDuration: 1000, // 选择视频的默认时长限制imgDisplayDuration: 3, // 单张图片默认展示时间(秒)allMediaNum: 9, // 所有素材数量限制videoMediaNum: 5, // 视频素材数量限制},// 相机页配置camera: {videoMaxDuration: 30, // 可拍摄总时长,小程序限制最多拍摄30秒modeTypes: ['album', 'camera', 'template'], // 资源入口控制defaultMode: 'camera', // 默认入口chooseMediaTypes: ['image', 'video'], // 可选资源类型},// 编辑页配置edit: {editMode: ['album', 'manual'], // 编辑模式,album:影集模式、manual:普通模式},// 导出页配置export: {exportPagePath: "../export/index", // 导出页面路径},// 自定义资源source: {// 自定义音乐music: [{Name: '音乐名称',key: 'music1',previewImage: "https://xxx.png"src: 'https://xxx.mp3',}, {Name: '音乐名称',key: 'music2',previewImage: "https://xxx.png"src: 'https://xxx.mp3',}],// 自定义滤镜filters: {tabs: [{key: 'tab-1',name: '滤镜',list: [{key: 'filter1',name: '测试1',src: "https://xxx.png",previewImage: "https://xxx.jpg",}, {key: 'filter2',name: '测试2',src: "https://xxx.png",previewImage: "https://xxx.jpg",}]}]},// 自定义特效effects: {tabs: [{key: 'tab1',name: '特效',list: [{key: 'effect1',name: "特效1",previewImage: 'https://xxx.png',is_alpha: true,alpha_url: 'https://xxx.mp4'},{key: 'effect2',name: "特效2",previewImage: 'https://xxx.png',is_alpha: true,alpha_url: 'https://xxx.mp4'}]}]},// 自定义贴纸stickers: {tabs: [{key: 'tab1',name: '贴纸',list: [{key: "sticker1",name: "贴纸1",previewImage: "https://xxx.png",zipUrl: "https://xxx.zip"},]}, {key: 'tab2',name: '表情',list: [{key: "sticker2",name: "表情2",previewImage: "https://xxx.png",zipUrl: "https://xxx.zip"},]}]},// 自定义字体,1.8.0以上版本fonts: {fontList: [{name: '字体1',family: 'font1',url: 'https://xxx.ttf'}, {name: '字体2',family: 'font2',url: "https://xxx.ttf"}],// 花字和文字模板制作教程暂未开放,敬请期待stickers: [],huazi: []},// 自定义字体,1.8.0以下版本fonts: [{name: '字体1',family: 'font1',url: 'https://xxx.ttf'}, {name: '字体2',family: 'font2',url: "https://xxx.ttf"}],// 自定义模板templates: {tabs: [{key: 'tab1',name: '模板',list: [{"name": "朋友圈","key": "pengyouquan","thumbUrl": "https://xxx.jpg","previewUrl": "https://xxx.mp4","resourceUrl": "https://xxx.zip","count": 3,"isTrack": true}]}]}}
推荐通过插件的内置方法 initPlugin 向插件注入自定义配置,旧的 clip 组件配置 settings 属性的方式局限性较大,已不推荐。
<!-- 初始化逻辑通常写在app.js中-->const plugin = requirePlugin("myPlugin") // "myPlugin" 为 app.json 中配置的插件别名App({onLaunch: function () {if(plugin.initPlugin){const settings = {……}plugin.initPlugin(settings) // 手动初始化插件}}})
注意
用户提供自定义配置时,需要严格遵循上述数据结构,可以缺省某些参数,但是不可以随意修改其名称。插件会提供一份默认的配置项,然后根据用户传入的数据做 deep merge。
// 这样也是正确的(只配置了导出页相关),其他配置用插件默认值{export: {exportPagePath: "../export/index", // 导出页面路径}}
UI 自定义
快速接入模式旨在通过最少的代码量(入口、出口组件)将视频剪辑的功能添加到主体小程序中,故内部的交互完全由插件自身实现,因此是不支持交互的自定义的。
但是可以通过配置相关主题色配置,实现简单的换肤功能,我们以上述第二种注入配置的方式为例,具体如下:
const plugin = requirePlugin("myPlugin") // "myPlugin" 为 app.json 中配置的插件别名App({onLaunch: function () {if(plugin.initPlugin){const settings = {theme: {primaryColor: "rgb(60,179,113)", // 主题色button: { // 按钮配置default: { // 默认状态backgroundColor: "rgb(60,179,113)",textColor: "#fff"},disable: { // 禁用状态backgroundColor: "#ddd",textColor: "#fff"}}},}plugin.initPlugin(settings) // 手动初始化插件}}})
通过配置主题色和按钮默认颜色为
rgb(60,179,113)
,便实现了换肤的功能,颜色相关配置涉及透明度计算,请使用 RGB 或16进制形式。
素材自定义
为了更方便用户自定义与扩展,插件将现有的内置资源:音乐、滤镜、特效、字体、贴纸(表情)、模板列表向用户开放,上述内置资源可以通过以下方式获取,以获取内置滤镜列表为例:
const plugin = requirePlugin("myPlugin") // "myPlugin" 为 app.json 中配置的插件别名App({async onLaunch () {const musicList = await plugin.getFilterList// 类似接口:// musicList 内置音乐列表// getEffectList 内置特效列表// getStickerList 内置贴纸列表// getTemplateList 内置模板列表// getFontList 内置字体列表}})