利用pixi.js制作精灵动画

CSS Sprites 技术对于广大的前端工程师来说应该是一点也不陌生。国内开发者昵称为CSS精灵,通过一定的技术手段,让精灵动起来,我称其为精灵动画,那么目前有哪些实现方式 呢?下面让我们详细的聊聊。

关于实现精灵动画的方式有很多种,我自己实践过的主要有三种:

1: 把动作分解成一系列连续的编号的图片,如img0.jpg,img1.jpg,img2.jpg...,然后利用setIntval等定时器不断的去更换图片地址。

2: 把动作按照一定的间距排列在一张图片上,利用css3的动画帧,做出动画效果。

3: 利用pixi.js 精灵库来实现该效果

我们先分析一下上面三种实现方式的优缺点:

第一种,优点是简单粗暴,兼容性好,学习成本低。缺点是要加载的图片多,效率低,定时器本身也有不少问题。

第二种,优点是实现方便,充份利用了css3的动画特性,避免了使用定时器的各种原始问题。缺点是需要优赖css3,兼容性差,如果是动态生成的样式,同样有效率问题。

第三种,优点是充份利了cavas/webgl来实现,可以利用硬件加速,功能强大。缺点是学习成本高,同样有兼容性问题。

前面两种,我在项目中都有运应用,今天我要重点讨论的是第三种方案。在前面我介绍过pixi.js的简单用法,当时只说明了一些基本概念和静态图片的用法,没有讲到用它做动画。

官网有一个精灵动画的例子,但是用的是josn格式的配置,看的是一头雾水,显然对于一个简单的精灵动画,显得太过复杂了。我下面的例子是要实现一个类似小鸟飞舞翅膀或人跑步的动画,我们一起来看看利用pixi.js该怎么做。

            var i=0;
            var x = 0;
            var data = [];            var width = 300;            var width = 300;
            var stage = new PIXI.Stage(0xFFFFFF);
            var renderer = PIXI.autoDetectRenderer(width, height);
            $element.empty().append(renderer.view);
            var sprite = new PIXI.Sprite.fromImage(‘bird.png‘);            //对图片进行缩放
            //sprite.scale.x = .5;
           // sprite.scale.y = .5;

            for(var i = 0; i < count; i++){
                  data.push(i*width);
            }

            stage.addChild(sprite);

            requestAnimFrame(animate);

            function animate(){
               //控制刷新频率
               if( i % 15 == 0){
                  sprite.position.x = -data[x];
                  renderer.render(stage);
                  x++;
                  if(x > data.length -1){
                        x = 0;
                        i = 0;
                  }
               }
               i++;
               requestAnimFrame(animate);
            }

通过上面的代码,可以看到小鸟已经在欢快的舞动它的翅膀了。看起来很美好,当我把它移到我的项目中的时候,发现有一个白色背景。这个确实很可恶,翻遍了官方提供的api,没有找到可以控制舞台透明的参数。明天看下源码看是否有解,如果有知道的大神,也请告诉我一声。

时间: 2024-10-13 01:12:11

利用pixi.js制作精灵动画的相关文章

利用css+js制作下拉列表

利用文本框来制作,可以不影响给后台传数据.<!DOCTYPE html> <html> <head> <style> *{margin:0; padding:0; border:0;} body{font-family:"微软雅黑";} .in{width:150px; height:30px; cursor:pointer; position:relative;} .in .choose{width:120px; height:30px

【百度地图API】如何利用地图API制作汽车沿道路行驶的动画?——如何获得道路层数据

原文:[百度地图API]如何利用地图API制作汽车沿道路行驶的动画?--如何获得道路层数据 有几个做汽车导航的朋友问我说,他们想在地图上制作一辆车沿着道路行驶的动画.可是,百度地图的道路数据并没有公开.所以,应该怎么办呢? 一. 我们先来学习如何把百度地图“弄”出来.把下面这段代码保存为htm格式,用浏览器打开,就能看到百度地图了. <html><head><meta http-equiv="Content-Type" content="text

初学JS——利用JS制作的别踩白块儿(街机模式) 小游戏

初学JS--利用JS制作的别踩白块儿(街机模式) 小游戏 这个是上个星期5写的了,当时是突然想写个游戏,就想到了别踩白块儿,当时的想法是 可能普通模式的别踩白块儿因为他的"块儿"是滚动的向上这种,以我目前会的技术想不出怎么写, 但是如果是街机模式,通过你每按一次按键之后他像下跳一格这样的就非常好实现了. 通过我目前会的知识,实现的步骤大概是这样的: 建一个4X4的表格,制作2张150X100的图片,一张全白色,一张全黑色,命名为0.JPG,1.JPG 就是说当文件名为0的时候就是白色的

利用css+原生js制作简易钟表

利用css+原生js制作简单的钟表.效果如下所示 实现该效果,分三大块:html.javascript.css html部分html部分比较简单,定义一个clock的div,内部有原点.时分秒针.日期以及时间,至于钟表上的刻度.数字等元素,因为量比较多,采用jvascript生成 <!doctype html> <html> <head> <meta charset="UTF-8"> <link rel='stylesheet' h

利用css3-animation来制作逐帧动画

参考:https://www.qianduan.net/css3-animation/ 利用css3-animation来制作逐帧动画 常见用法: animation:mymove 4s ease-out 1s backwards; @-webkit-keyframes mymove /*Safari and Chrome*/ { from {left:0px;} to {left:200px;} } 解释: mymove :keyframes的名称; 4s:动画的总时间; ease-out:

html5轻量级操纵和制作SVG动画的js库-svg.js

svg.js是一个轻量级的操纵和制作SVG动画的js插件库.svg.js可以生成SVG图形.图像.文字和路径等等.svg.js还可以用于制作svg动画和互动拖拽等效果. svg.js不依赖与jQuery等外部插件库,它遵循麻省理工学院的许可( MIT License)下许可证的条款. 在线演示:http://www.htmleaf.com/Demo/201501301302.html 下载地址:http://www.htmleaf.com/html5/SVG/201501301301.html

【Pixi.js从零开始】开始使用Pixi游戏引擎

本示例简单演示如何创建一个Pixi项目,以及制作一个滚动场景. 首先下载源码:https://github.com/GoodBoyDigital/pixi.js 1.配置canvas: <head lang="en"> <meta charset="UTF-8"> <title>MyPixi</title> <style> body { background-color: #000000; } canvas

【v2.x OGE-example 第三节 播放精灵动画】

1. 位置:Drawing_example --> SpriteAnimated 2. 类名:SpriteAnimated 3.利用AnimatedSprite动画精灵类能够实现多种多种动作. 比如: (1).播放精灵动画,指定播放速度: (2).播放特定帧,指定特定每一帧的帧速,能够实现慢放,快进,跳帧.倒放等. (3).能够循环播放,也能够仅仅播放一次,也能够指定播放次数: (4).增加监听器.全然掌握动画的播放状态,開始?结束?播到第几帧?是否播放完?循环了几次: 4.一下是Animate

Adobe edge animate制作HTML5动画可视化工具(一)

Edge Animate for mac是Adobe最新出品的制作HTML5动画的可视化工具,简单的可以理解为HTML5版本的Flash Pro.在之后的文章中,我会逐一的介绍这款新的HTML5动画神器.这篇文章先说一说如何把Edge Animate制作的HTML5动画作品嵌入到Wordpress中. Adobe Edge Animate的目的是帮助专业设计师制作网页动画乃至简单游戏.目前该工具的重点放在动画引擎上,将增加更多HTML5功能,比如Canvas.HTML5音频/视频标签等.支持An