HTML5 Canvas类库中的ZRender什么
创始人
2024-12-17 12:03:24
0次

  一个轻量级的Canvas类库,MVC封装,数据驱动,提供类Dom事件模型,让canvas绘图大不同!

Architecture

  MVC核心封装实现图形仓库、视图渲染和交互控制:

  Stroage(M):shape数据CURD管理

  Painter(V):canvas元素生命周期管理,视图渲染,绘画,更新控制

  Handler(C):事件交互处理,实现完整dom事件模拟封装

  shape:图形实体,分而治之的图形策略,可定义扩展

  tool:绘画扩展相关实用方法,工具及脚手架

zrender

  特色

  简单

  无需canvas基础,精简的接口方法,符合AMD标准,易学易用。

  require(

  ['zrender/zrender'],

  function(zrender){

  //justinittogetazrenderInstance

  varzr=zrender.init(document.getElementById('main'));

  //zrcanbeusednow!

  ...

  }

  );

数据驱动

  利用zrender绘图,你只需做的是定义图形数据,剩下的事情就交给zrender吧~

  哦,对了,差点忘记告诉你,只要在你定义图形数据时设置draggable属性为true,图形拖拽就已经可用了!

  zr.addShape({

  shape:'circle',

  style:{

  x:100,

  y:100,

  r:50,

  color:'rgba(220,20,60,0.8)'

  }

  });

  zr.render();

完整的事件封装

  用你再熟悉不过的dom事件模型去操作canvas里的图形元素是件很cool的事情~

  你不仅可以响应zrender全局事件,你甚至可以为在特定shape上添加特定事件,后续发生的一切都会按你想的那样去运行~

  zr.addShape({

  shape:'circle',

  style:{...},

  //图形元素上绑定事件

  onmouseover:function(params){concole.log('catchyou!')}

  });

  //全局事件

  zr.on('click',function(params){alert('Hello,zrender!')});

高效的分层刷新

  正如css中zlevel的作用一样,你可以定义把不同的shape分别放在不同的层中,这不仅实现了视觉上的上下覆盖,更重要的是当图形元素发生变化后的refresh将局限在发生了变化的图形层中,这在你利用zrender做各种动画效果时将十分有用,性能自然也更加出色~

  zr.addShape(shapeA);//shapeA.zlevel=0;(default)

  zr.addShape(shapeB);//shapeB.zlevel=1;

  zr.render();

  zr.modShape(shapeB.id,{color:'red'});

  //Don'tworry!Ismerge!

  zr.refresh();

  //Justthelevel1canvashasbeenrefresh~

丰富的图形选项

  当前内置多种图形元素(圆形、椭圆、圆环、扇形、矩形、多边形、直线、曲线、心形、水滴、路径、文字、图片等),统一且丰富的图形属性充分满足你的个性化需求!

  varmyShape={

  shape:'circle',//sector|ring|rectangle|...

  zlevel:1,

  style:{

  ...//color|strokeColor|text|textFont|...

  },

  draggable:true

  };

强大的动画支持

  提供promise式的动画接口和常用缓动函数,轻松实现各种动画需求~

  varcircle={

  shape:'circle',

  id:zr.newShapeId(),

  style:{

  x:0,

  y:0,

  r:50

  }

  };

  zr.addShape(circle);

  zr.animate(circle.id)

  .when(1000,{

  position:[100,100]

  })

  .when(2000,{

  rotation:[Math.PI*2,0,0]

  })

  .start();

易于扩展

  分而治之的图形定义策略允许你扩展自己独有的图形元素,你既可以完整实现三个接口方法(brush、drift、isCover),也可以通过base派生后仅实现你所关心的图形细节。

  functionMyShape(){...}

  varshape=require('zrender/shape');

  shape.define('myShape',newMyShape());//defineyourshape

  zr.addShape({//anduseit!

  shape:'myShape',

  ...

  });

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...