UNPKG

sprite-frame-animation

Version:

A user-friendly Sprite frame animation library

1 lines 19.7 kB
{"version":3,"file":"index.mjs","sources":["../src/index.js"],"sourcesContent":["const SPRITE_FRAME_ANIMATION_VERSION = '1.0.0';\r\nconst SPRITE_FRAME_ANIMATION_NAME = '_SPRITE_FRAME_ANIMATION_NAME_';\r\n\r\nclass SpriteFrameAnimation {\r\n constructor(options) {\r\n this.version = SPRITE_FRAME_ANIMATION_VERSION;\r\n this.initParam();\r\n this.reset(options);\r\n this.init(options);\r\n this.validateName();\r\n }\r\n validateName() {\r\n const key = SPRITE_FRAME_ANIMATION_NAME + this.name;\r\n this.key = key;\r\n const oldInstace = window[key];\r\n if (this.name && !oldInstace) {\r\n window[this.key] = this;\r\n } else {\r\n console.warn('The animation name already exists', oldInstace);\r\n }\r\n }\r\n initParam() {\r\n this.name = ''; //动画名称\r\n this.width = 0; //帧动画每帧的宽度\r\n this.height = 0; //帧动画每帧的高度\r\n this.img = 0; //一个动画的完整序列帧url\r\n this.orient = 'left-right'; //关键帧图片的排列方式\r\n this.count = 0; //动画循环次数\r\n this.delay = 0; //动画延时多久开始\r\n this.duration = 1000; //动画持续时间ms\r\n this.autoplay = true;\r\n this.currentKey = 0; //开始索引帧\r\n this.totalKeyNum = 0; //总帧数据\r\n this.paramMd5 = '';\r\n this.delayFunc = [];\r\n this.spriteArray = [];\r\n this.interval = 0; //动画执行间隔时间\r\n this.isAnimating = false;\r\n this.isLoadingImage = true;\r\n this.image = null; // 图片实例\r\n this.fImage = null; // 首次渲染图片实例\r\n this.eventMap = new Map();\r\n }\r\n reset(options) {\r\n const isReload = options.img && this.img && options.img !== this.img;\r\n //ani上的属性,全部赋值一遍\r\n for (let attr in options) {\r\n this[attr] = options[attr];\r\n }\r\n if (isReload) {\r\n console.log('Reload animation resources', options.img);\r\n this.init(options);\r\n }\r\n }\r\n async initElement(options) {\r\n if (!this.canvasRef) {\r\n const { container } = options;\r\n if (options.firstImg && !this.image) {\r\n const fImg = document.createElement('img');\r\n fImg.style.width = '100%';\r\n fImg.style.height = '100%';\r\n fImg.src = options.firstImg;\r\n container.appendChild(fImg);\r\n this.fImage = fImg;\r\n }\r\n this.canvasRef = document.createElement('canvas');\r\n this.canvasRef.width = this.width;\r\n this.canvasRef.height = this.height;\r\n this.canvasRef.style.width = '100%';\r\n this.canvasRef.style.height = '100%';\r\n container.appendChild(this.canvasRef);\r\n }\r\n }\r\n async getCurrentImage() {\r\n if (this.image && this.image.src === this.img) {\r\n return this.image;\r\n }\r\n return this.image || (await getImgData(this.img));\r\n }\r\n async init(options) {\r\n this.initElement(options);\r\n this.clearFrame();\r\n if (!this.img) {\r\n return false;\r\n }\r\n let imageInstce;\r\n imageInstce = await this.getCurrentImage();\r\n if (!imageInstce) {\r\n console.error(`${this.img} load failed`);\r\n return false;\r\n }\r\n this.isLoadingImage = false;\r\n this.image = imageInstce;\r\n //持续时间\r\n // if (typeof this.duration === 'string') {\r\n // let duration = this.duration.match(/^([\\d|.]+)ms|([\\d|.]+)s$/i);\r\n // duration = duration[1] || duration[2] * 1000;\r\n // this.duration = +duration;\r\n // }\r\n //持续时间\r\n // if (typeof this.interval === 'string') {\r\n // let interval = this.interval.match(/^([\\d|.]+)ms|([\\d|.]+)s$/i);\r\n // interval = interval[1] || interval[2] * 1000;\r\n // this.interval = +interval;\r\n // }\r\n //每帧的坐标信息\r\n for (let idx = 0; idx < this.totalKeyNum; ++idx) {\r\n if (this.orient === 'left-right') {\r\n this.spriteArray.push({ x: idx * this.width, y: 0 });\r\n } else {\r\n this.spriteArray.push({ x: 0, y: idx * this.height });\r\n }\r\n }\r\n this.showCover();\r\n if (this.autoplay) {\r\n this.start();\r\n } else {\r\n this.delayFunc.forEach((fn) => {\r\n fn.call(this);\r\n });\r\n }\r\n }\r\n start() {\r\n if (!this.image) {\r\n this.delayFunc.push(this.start);\r\n return;\r\n }\r\n const ctx = this.canvasRef.getContext('2d');\r\n let aniTimes = 0;\r\n //开始动画吧\r\n if (this.isAnimating) {\r\n return; // 防止重复启动\r\n }\r\n this.isAnimating = true;\r\n this[this.key] = setTimeout(() => {\r\n drawImg(this, ctx);\r\n }, this.delay);\r\n function drawImg(self, ctx) {\r\n let end = false;\r\n ctx.clearRect(0, 0, self.width, self.height);\r\n ctx.drawImage(\r\n self.image,\r\n self.spriteArray[self.currentKey].x,\r\n self.spriteArray[self.currentKey].y,\r\n self.width,\r\n self.height,\r\n 0,\r\n 0,\r\n self.width,\r\n self.height,\r\n );\r\n if (self.currentKey !== self.totalKeyNum - 1) {\r\n //到了最后一帧\r\n self.currentKey++;\r\n } else {\r\n self.currentKey = 2;\r\n aniTimes++;\r\n end = true;\r\n if (self.count && aniTimes >= self.count) {\r\n //动画结束\r\n self.emitEnd();\r\n return;\r\n }\r\n }\r\n self[self.key] = setTimeout(\r\n () => {\r\n drawImg(self, ctx);\r\n },\r\n end && self.interval ? self.interval : self.duration / self.totalKeyNum,\r\n );\r\n }\r\n }\r\n showCover() {\r\n const canvas = this.canvasRef;\r\n if (!canvas) return;\r\n const ctx = canvas.getContext('2d');\r\n //先画封面\r\n ctx.drawImage(\r\n this.image,\r\n 0,\r\n 0,\r\n this.width,\r\n this.height,\r\n 0,\r\n 0,\r\n this.width,\r\n this.height,\r\n );\r\n // 显示完封面,删除\r\n if (this.fImage) {\r\n this.fImage.remove();\r\n }\r\n }\r\n stop() {\r\n this.clearFrame();\r\n }\r\n clearFrame() {\r\n console.log('clearFrame');\r\n this.isLoadingImage = true;\r\n this.isAnimating = false;\r\n clearTimeout(this[this.key]);\r\n }\r\n destroy() {\r\n this.stop();\r\n this.canvasRef.remove();\r\n if (this.fImage) {\r\n this.fImage.remove();\r\n }\r\n window[this.key] = null;\r\n }\r\n /**\r\n * 简单实现事件监听\r\n * @param {*} type\r\n * @param {*} fn\r\n */\r\n on(type, fn) {\r\n const oldEvents = this.eventMap.get(type);\r\n if (oldEvents) {\r\n oldEvents.push(fn);\r\n } else {\r\n const events = [fn];\r\n this.eventMap.set(type, events);\r\n }\r\n }\r\n emitEnd() {\r\n this.eventMap.get('end') && this.eventMap.get('end').forEach((fn) => fn());\r\n }\r\n}\r\n// 获取图片数据\r\nfunction getImgData(url, isNeedCross) {\r\n return new Promise((resolve) => {\r\n let image = new Image();\r\n image.onload = function () {\r\n resolve(image);\r\n };\r\n image.onerror = function () {\r\n resolve(null);\r\n };\r\n if (isNeedCross) {\r\n image.crossOrigin = 'anonymous';\r\n }\r\n image.src = `${url}?${Date.now()}`;\r\n });\r\n}\r\n// function getOptionsMd5(options, random) {\r\n// let optionsString = '';\r\n// for (let attr in options) {\r\n// optionsString += `${attr}:${options[attr]}`;\r\n// }\r\n// return optionsString + random;\r\n// }\r\nexport default SpriteFrameAnimation;\r\n"],"names":["SPRITE_FRAME_ANIMATION_VERSION","SPRITE_FRAME_ANIMATION_NAME","SpriteFrameAnimation","options","_classCallCheck","version","initParam","reset","init","validateName","_createClass","key","value","name","oldInstace","window","console","warn","width","height","img","orient","count","delay","duration","autoplay","currentKey","totalKeyNum","paramMd5","delayFunc","spriteArray","interval","isAnimating","isLoadingImage","image","fImage","eventMap","_Map","isReload","attr","log","_initElement","_asyncToGenerator","_regeneratorRuntime","mark","_callee","container","fImg","wrap","_callee$","_context","prev","next","canvasRef","firstImg","document","createElement","style","src","appendChild","stop","initElement","_x","apply","arguments","_getCurrentImage","_callee2","_callee2$","_context2","abrupt","t0","getImgData","sent","getCurrentImage","_init","_callee3","_this","imageInstce","idx","_context3","_callee3$","_context4","clearFrame","error","concat","push","x","y","showCover","start","_forEachInstanceProperty","call","fn","_x2","_this2","ctx","getContext","aniTimes","_setTimeout","drawImg","self","end","clearRect","drawImage","emitEnd","canvas","remove","clearTimeout","destroy","on","type","oldEvents","get","events","set","_context5","url","isNeedCross","_Promise","resolve","_context6","Image","onload","onerror","_concatInstanceProperty","_Date$now"],"mappings":"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"}