Pixi.js —— h5创作引擎

简介:

Pixi.js是基于WebGL的一个超快的HTML5 2D渲染引擎。作为一个Javascript的2D渲染器,Pixi.js的目标是提供一个快速的、轻量级而且是兼任所有设备跨平台的2D库。API简单、友好,开发者无需深入WebGL即可快速上手使用。

NPM install:

$> npm install pixi.js

CND install:


初步认识:

创建一个画布也就是渲染器    var renderer = PIXI.autoDetectRender(width, height); 可选参数。

{antialiasing: boolean, transparent: boolean, resolution: number} ,boolean  分别是反锯齿  北京颜色  分辨率 强制使用canvas渲染器。

var renderer = new PIXI.CanvasRenderer(256, 256); 强制使用canvas 渲染器。

var renderer = new PIXI.WebGLRenderer(256, 256); 强制使用 WebGL 渲染器。

把画布加入DOM渲染树  document.body.appendChild(renderer.view);   renderer.view  即是 DOM中的canvas Element。

设置画布颜色 renderer.backgroundColor = 0x061639;  注意颜色值 要用16进制表示。

改变画布大小  renderer.resize(512, 512);

设置DOM中canvas的style:renderer.view.style.width = window.innerWidth + "px";  

创建一个stage即舞台,放置sprite即精灵的容器  var stage = new PIXI.Container();

把这个stage插入到画布中 renderer.render(stage);

stage 中插入或移除 精灵(稍后说到)  stage.addChild(sprite)  stage.removeChild(sprite)

别名:

var Container = PIXI.Container,

      autoDetectRenderer = PIXI.autoDetectRenderer,

      loader = PIXI.loader,

      resources = PIXI.loader.resources,

      TextureCache = PIXI.utils.TextureCache,

      Texture = PIXI.Texture,

      Sprite = PIXI.Sprite;

PIXI是以单例模式构建的,由于它的API比较长建议用别名缓存起来,同时有一些,每个项目都需要重复的 coding 的内容 也建议和缓存的别名 一起封装起来,以减少开发成本。


资源机制:

PIXI.loader.add("images/cat.png").load(setup).on('progress', loadProgressHandler);    加载完成后执行 setup 方法,有点类似于 promise.all  全部资源加载成功后 才会执行 ,载入后的资源放在 PIXI.loader.resources 内,可以通过 PIXI.loader.resources['images/cat.png'] 拿到。loadProgressHandler有两个参数loader 和 resource。


精灵sprite:

创建精灵  var cat = PIXI.sprite(PIXI.loader.resources['images/cat.png'].texture);

精灵的属性

 cat.position.set(x, y); cat.anchor.set(x, y); cat.scale.set(num, num);

 cat.x; cat.y; cat.width; cat.height; cat.anchor.x; cat.anchor.y;(精灵的锚点) cat.rotation;

cat.vx; cat.vy; 精灵在分别在x y轴上移动到速度。

创建材质  var texture = PIXI.utils.TextureCache['images/cat.png'];

创建空间  var rectAngle = new PIXI.Rectangle(192, 128, 64, 64);

设置材质填充的区域  texture.frame = rectAngle;

由材质和空间 创建精灵  var cat = new Sprite(texture);

精灵动画:

functiongameLoop(){

//每秒执行60次方法  即60帧

         requestAnimationFrame(gameLoop);

//横向移动

          cat.x+=1;

//每次执行强制渲染

          renderer.render(stage); 

}


形状精灵:

Graphics=PIXI.Graphics;

圆形

var circle = newGraphics();

circle.beginFill(0x9966FF);

circle.drawCircle(0,0,32);

circle.endFill();

circle.x = 64;

circle.y = 130;


长方形

var rectangle = newGraphics();

rectangle.lineStyle(4,0xFF3300,1);

rectangle.beginFill(0x66CCFF);

rectangle.drawRect(0,0,64,64);

rectangle.endFill();

rectangle.x = 170;

rectangle.y = 170;


线段

var line = newGraphics();

line.lineStyle(4,0xFFFFFF,1);

line.moveTo(0,0);

line.lineTo(80,50);

line.x = 32;

line.y = 32;


椭圆

varellipse=newGraphics();

ellipse.beginFill(0xFFFF00);

ellipse.drawEllipse(0,0,50,20);

ellipse.endFill();

ellipse.x=180;

ellipse.y=130;


三角形

vart riangle = newGraphics();

triangle.beginFill(0x66FF33);

// 设置三角形的点

triangle.drawPolygon([

-32,64,//First point

32,64,//Second point

0,0//Third point

]);

triangle.endFill();

//三角形点锚点 默认在三角形点第一个点上


文字精灵:

var message=newPIXI.Text(

"Hello Pixi!",

{font: "32px sans-serif", fill :"white"}

);


事件:

stage.click = function (data) {

        var event = data.originalEvent;

}

sprite.click = function (data) {

        var event = data.originalEvent;

        var target =event.target;

        //阻止默认行为,

         sprite.buttonMode = false;

         event.preventDefault();

}

舞台和精灵都可以绑定各种事件

注意事项:

对于有事件的精灵,通常需要设置sprite.interactive = true , 

对于作按钮用的精灵,需要设置sprite.buttonMode = true;

与DOM的事件不同的是,精灵中的事件,是进行了二次封装的,

通常需要用var event = data.originalEvent来与普通dom中的event对象保持一至。


在线资源

Demo: github.com/kittykatattack/learningPixi 由浅入深,对初学者很友好,建议跑上一遍。

GitHub:https://github.com/GoodBoyDigital/pixi.js/

官网: http://www.pixijs.com/

API :http://pixijs.download/release/docs/index.html

官方教程:https://github.com/kittykatattack/learningPixi

https://github.com/GoodBoyDigital/pixi.js


     小猿初学pixi,如有错误或不足以官网为主 

     欢迎交流 E-mail: [email protected]


你可能感兴趣的:(Pixi.js —— h5创作引擎)