实战入门Canvas

最近实在太忙,实在没时间写文章,在此表示抱歉。今天给大家代码一篇前端Canvas开发实战(你要知道WebGIS中很多图层覆盖物等元素都是通过Canvas渲染的,因为我们经常调用常用的API,如OpenLayer或Leaflet,并不知晓其源码中逻辑道理,学会了Canvas或SVG,为后续看懂常用地图前端框架,将大有帮助)。以下直接上图:

 

前几天工作上遇到了一个新需求:绘制如上图多个柱体连接在一起(每个柱体可以代表各种储水设施,同时用三角形角标,柱体内部填充色柱体表示实时水位)。

1、接到此任务后,我结合以往经验,绘制这种柱体(2.5d),应该可以用SVG,Canvas,OSMBuildings,甚至Cesium或Three.js。

2、以上几个方案都进入我的脑海,经过分析,对比这几种选型的优劣势Cesium或Three.js是基于WebGL库的前端框架(低版本的IE浏览器不支持),做这么一个轻量级的功能,每必要搞个这么大引用包,得不偿失。所以这个方案PASS。

3、前段时间刚好接触了OSMBuildings,也写些相关代码,但它是基于已有空间坐标。针对一个纯前台页面,我需要研究源码后写扩展,这也太费力,故PASS。

4、最后剩余SVG和Canvas,刚好之前用leaflet扩展写过一个点label多行显示的功能,故选择用Canvas绘制(站在巨人的肩膀上)。

 

开发过程:

请详见我的微信公众号

一位更懂IT的GISER,一位更懂GIS的IT

var canvas = document.getElementById("canvas"),

    ctx = canvas.getContext("2d");

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
随着html5 相关技术的兴起,因其跨平台的特性,和标准的日益完善。html5相关技术越来越多的被应用到前沿app的开发中,尤其是html5 小游戏的开发。 Laro 是一个基于html5 canvas的用于平面2d或者2.5d游戏制作的轻量级游戏引擎。 因为当前canvas作为画布形态的dom元素,并提供了大量关于矢量图以及texture绘制的api,但是由于其本身提供的api太过于底层,在类似游戏这一类交互性,逻辑性较为复杂的app时。需要开发者编写大量底层的api来实现本身的业务逻辑。 Laro出现的目的是为了简化使用canvas制作游戏时的api调用。同时提供了一套“有限状态机”的开发模式,这种模式在对于游戏这一类的典型的“事件驱动”的模型的开发上。能够很好的做到模块间的低耦合,利于开发者梳理整个开发逻辑。 Laro 游戏引擎目前已经完成了游戏开发中所需要的模块和api的封装,并有一些实际的Demo和TestCase供使用者参考。而且随后会结合这个引擎整理出一套用于html5 小游戏开发的可视化编辑工具。 旨在帮助开发者更快更容易的搭建一款小游戏为目的。 目前已经开源到github (https://github.com/AlloyTeam/Laro) 我们团队希望通过Laro的不断完善,能够帮助更多的html5 小游戏开发者以更快的速度,更优的质量完成 html5小游戏 产业化的开发。 Version Log 0.1 - 基础模块搭建 0.2 - 融入jcanvas,配合鼠标事件处理 0.3 - 加强状态机模块 查看以下demo最好使用chrome  : ) http://hongru.github.com/proj/laro/examples/emberwind/ http://hongru.github.com/proj/laro/examples/typeshot/index.html http://hongru.github.com/proj/laro/examples/jxhome/ http://heroes.github.com/world-of-heroes/development/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dinxin横刀一笑

意思不意思那是你的意思

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值