# time-gallery **Repository Path**: echonull/time-gallery ## Basic Information - **Project Name**: time-gallery - **Description**: No description available - **Primary Language**: JavaScript - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-12-01 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Time-Gallery 2X 功能新增 1. 新增 **mask** 基础属性 2. 新增 **loop** 动画属性 基于 CreateJs 实现长图滑动加动画的效果,整段长图可想象成是一段时间轴,在时间轴上自定义各种动画,通过滑动或自定义交互控制时间轴播放。 ## 前言 之前公司要开发一个长图加动画的H5项目,我看到很多类似的案例是基于白鹭来开发,但因为本人没接触过白鹭,于是自己就基于 CreateJs 扩展开发一个长图滑动加动画的框架。 因为后来很多同事问我拿源码开发类似的项目,所以就决定把源码分享出来一起学习。 在这里不需要掌握 CreateJs,如果想做类似项目的朋友可直接使用。 当然,如果熟悉 CreateJs 的朋友,可基于源码 **SRC** 扩展更多满足自己想要的功能。 ## 案例参考 ![](http://o.gd.sina.com.cn/staff/zt2/qrcode/1.jpg) ![](http://o.gd.sina.com.cn/staff/zt2/qrcode/5.jpg) ![](http://o.gd.sina.com.cn/staff/zt2/qrcode/4.jpg) ![](http://o.gd.sina.com.cn/staff/zt2/qrcode/3.jpg) ![](http://o.gd.sina.com.cn/staff/zt2/qrcode/2.jpg) ![](http://o.gd.sina.com.cn/staff/zt2/qrcode/6.jpg) ## 使用 HTML ``` ``` JS ``` var timeGallery = new TimeGallery({ id: 'gallery-canvas', // 定义画布的 ID(必选) width: 750, // 定义画布的宽度,根据设计稿定义(可选) height: window.innerHeight/window.innerWidth * 750, // 定义画布的高度,默认是全屏高度(可选) resourcesPath: 'assets/images/', // 定义资源文件的默认路劲(可选) resources: [ // 定义资源文件(必选) { src: 'demo.png', id: 'demo' }, { src: 'demo-sprite.png', id: 'demo-sprite' }, ], data: [], // 定义画布元素(必选) }); timeGallery.play(); ``` 这里我们就成功的创建了一个空白的画布,下一步我们需要建立画布元素。 ## 创建元素 TimeGallery 是通过遍历 data 属性的数组对象的来创建画布元素,data 可定义为函数并接收 TimeGallery 实例作为参数。 **可能当你往下看的时候,你可能会觉得贴的代码很多,有点复杂。其实你主要了解如何创建元素,元素有哪些类型与属性,然后练练手,你就大概知道怎样创建。** ``` // 定义画布元素函数 // 返回数组对象 function canvasData(timeGallery) { return [ { id: 'demo-container', prop: { x: 0, y: 0, }, children: [ { id: 'demo-bitmap', type: 'bitmap', image: timeGallery.getImage('demo'), prop: { x: 100, y: 100, } } ] } ] } // 把定义函数传给 data 属性 var timeGallery = new TimeGallery({ id: 'gallery-canvas', width: 750, height: window.innerHeight/window.innerWidth * 750, resourcesPath: 'assets/images/', resources: [ { src: 'demo.png', id: 'demo' }, { src: 'demo-sprite.png', id: 'demo-sprite' }, ], data: canvasData, // 这里 }); timeGallery.play(); ``` 这里我们定义了一个 ID 为 demo-container 的容器, 位于画布 x: 0,y: 0 的位置,容器内定义了一个为 Bitmap 的子类型,位于 demo-container 容器 x: 100, y: 100的位置。 把函数 **canvasData** 定义的元素传给 **data** 属性。 这时候,你应该看到一张静态的图片在画面上。 ## 元素类型 数据类型分别有 **Container, Bitmap, Sprite, Shape, Text**,以下是各类型的基本属性: ``` { id: 'name', // 为元素指定 ID, type: '', // 为元素指定类型,默认是 Container // 可定义基础属性 prop: { x: 0, // 基于父元素定义初始 X 位置 y: 0, // 基于父元素定义初始 Y 位置 regX: 0, // 定义元素 X 中心点 regY: 0, // 定义元素 Y 中心点 scaleX: 1, // 定义元素初始 Scale X scaleY: 1, // 定义元素初始 Scale Y skewX: null, // 定义元素初始 Skew X skewY: null, // 定义元素初始 Skew Y rotation: 0, // 定义元素初始旋转度数 alpha: 1, // 定义元素初始透明度(0-1) visible: true, // 定义元素是否可见 index: 0 // 定义元素在当前父元素层次位置 mask: [] // 定义元素遮罩层,可接受3种遮罩方式,圆形[x, y, radius], 矩形[0, 0, width, height], 圆角矩形[0, 0, width, height,radius], }, // 可定义方法 method: { cache: [x, y, width, height] // 为定义的对象定义缓存区域,有效提供渲染性能, 特别是 Bitmap 用到大图情况 } // 可定义动画属性 animation: { startById: '', // 与指定 ID 元素同步执行动画,不能与 afterById、endById 共用,ID 元素必须已创建。 endById: '', // 与指定 ID 元素同步结束动画,不能与 afterById、startById 共用,ID 元素必须已创建。 afterById: '', // 在指定 ID 元素结束后执行动画,不能与 startById、endById 共用,ID 元素必须已创建。 musicById: '', // 当动画开始执行时,播放指定 HTML 里音频ID