写在前面

不读文章,只对代码感兴趣可以直接跳转到这里 https://github.com/AlloyTeam/AlloyGameEngine
然后star一下,多谢支持:)。

游戏或者应用中,不是所有的地方都是贴图,Shape 也有很常见的应用场景,如游戏中显示HP的血条。大量的Shape可以组成矢量图。矢量图的好处是放大不失真,也就是不会变模糊;而位图放大失真,失真的程度要看其平台插值算法的牛B程度,但放大效果越好的算法,速度越慢,所以大部分平台会在速度和效果上取个折中。

绘制Shape根绘制位图本质不一样,绘制位图可以充分利用GPU渲染(当然也可以不用),绘制Shape必须经过CPU先进行数学计算和图形学相关算法(比如你可以尝试不使用api,而使用点去绘制贝塞尔曲线、圆形、线条等,你做的所有数学工作,就是计算机做的工作),然后再进行渲染。所以很显然,绘制大量的Shape会造成帧率下降。

那么又想使用Shape,又不想降低帧率怎么办?

绘制Shape和绘制图片又不冲突。Shape可以转成图片进行渲染,跟Shape类似的还有文字,文字也可以转成图片再进行绘制以提高绘制帧率,意思就是:
1.经过CPU先进行数学计算和图形学相关算法
2.渲染至某个备份Canvas
3.以后游戏或者应用中的core loop直接把备份Canvas绘制上去,而不用去重新计算
4.当Shape有更改的时候才去更新备份Canvas

这里需要注意的是:必须知道Shape所占据的宽高。

Shape类

AlloyRenderingEngine内置了Shape类用于绘制几何形状。
其API设计与命名也Canvas的Context2d的一致,不同在与:
1.使用了连缀的方法调用方式,
2.最后要调用end()结尾
3.需要增加到舞台

如入画一个圆:

(function (ARE) {

    var Stage = ARE.Stage, Shape = ARE.Shape;

    var stage = new Stage("#ourCanvas");

    var shape = new Shape(73, 76);

    shape.beginPath().arc(10,10,20, 0, Math.PI * 2).fill().end();

    stage.add(shape);

})(ARE);

可以看到,创建Shape的实例需要传两个参数,一个代表宽,一个代表高。具体为什么要传这两个参数,请从文章开头重新读一遍:)。
以此类推。其他的方法还有:moveTo、lineTo、bezierCurveTo、stroke、fillStyle、fillRect、clear、clearRect等…

而shape也拥有scale、scaleX、scaleY、skewX、skewY、rotation、x、y、alpha等属性

举个栗子(鼠标放在球上然后滚动你的滚轮试试)

再举个栗子(鼠标放在老虎上然后滚动你的滚轮试试)

滚轮事件怎么搞滴?

stage.onMouseWheel(function (evt) {

    if (evt.delta > 0) {

        shape.scale += 0.05;

    } else {                    

        shape.scale -= 0.05;

    }

}) 

简单吧!

Github

https://github.com/AlloyTeam/AlloyGameEngine
据说star一下不会怀孕= =!多谢支持:)!

AlloyRenderingEngine之Shape的更多相关文章

  1. AlloyRenderingEngine燃烧的进度条

    写在前面 Github: https://github.com/AlloyTeam/AlloyGameEngine HTML 5新增了progress标签,那么再去使用AlloyRenderingEn ...

  2. AlloyRenderingEngine开门大吉

    快速入口 不读文章可以直接拐向这里: github:https://github.com/AlloyTeam/AlloyRenderingEngine website:http://alloyteam ...

  3. AlloyRenderingEngine

    AlloyRenderingEngine燃烧的进度条 写在前面 Github: https://github.com/AlloyTeam/AlloyGameEngine HTML 5新增了progre ...

  4. OpenCASCADE Shape Location

    OpenCASCADE Shape Location eryar@163.com Abstract. The TopLoc package of OpenCASCADE gives resources ...

  5. Drawable实战解析:Android XML shape 标签使用详解(apk瘦身,减少内存好帮手)

    Android XML shape 标签使用详解   一个android开发者肯定懂得使用 xml 定义一个 Drawable,比如定义一个 rect 或者 circle 作为一个 View 的背景. ...

  6. Android GradientDrawable(shape标签定义) 静态使用和动态使用(圆角,渐变实现)

    Android GradientDrawable使用优势: 1. 快速实现一些基本图形(线,矩形,圆,椭圆,圆环) 2. 快速实现一些圆角,渐变,阴影等效果 3. 代替图片设置为View的背景 4. ...

  7. AlloyRenderingEngine文本框组件

    写在前面 Github: https://github.com/AlloyTeam/AlloyGameEngine 在dom元素里,自带了input标签,设置其type为text,它就是一个文本框. ...

  8. AlloyRenderingEngine继承

    写在前面 不读文章,只对代码感兴趣可以直接跳转到这里 https://github.com/AlloyTeam/AlloyGameEngine然后star一下,多谢支持:). 前几天发了篇向ES6靠齐 ...

  9. 浅谈Android样式开发之shape

    引言 在Android开发中我们很多情况都是使用图片来展示相关效果,今天我就来详细介绍下Android下使用Shape来进行简单UI的开发.一方面这些是Android开发的基础,另一方面这方面的知识可 ...

随机推荐

  1. 怎样在Dos里切换盘符

    一:在Dos里切换盘符 a:在电脑左下角右击显示图片;(我用的是win10系统,其他系统类似) b:点击运行,输入cmd; c:点击确定: d:输入盘符:(如f:) 或F: 只写字母,不写分号是不行的 ...

  2. 在Mac OS X上安装ASP.NET 5(译文)

    ASP.NET 5 运行在包括OS X的可用于多个平台的.NET Execution Environment(DNX)上.本文介绍如何在OS X上通过HomeBrew安装DNX和ASP.NET 5. ...

  3. K-近邻算法(KNN)

    简介 k近邻算法是数据分类一种常用的算法,属于监督学习算法的一类,它采用不同特征值之的距离进行分类.K近邻算法具有精度高.对异常值不敏感.无数据输入假定的优点,缺点是计算复杂度高.空间复杂度高.适用于 ...

  4. 监督学习 VS 无监督学习

    监督学习 就是人们常说的分类,通过已有的训练样本(即已知数据以及其对应的输出)去训练得到一个最优模型(这个模型属于某个函数的集合,最优则表示在某个评价准则下是最佳的),再利用这个模型将所有的输入映射为 ...

  5. ASP.NET MVC 5 Web编程5 -- 页面传值的方式

    本篇文章将讲述MVC的页面传值方式,具体包括:后端向前端传值(Controller向View传值):前端向后端传值(View向Controller传值):Action与Action之间的传值. 回顾 ...

  6. 【Java并发编程实战】----- AQS(四):CLH同步队列

    在[Java并发编程实战]-–"J.U.C":CLH队列锁提过,AQS里面的CLH队列是CLH同步锁的一种变形.其主要从两方面进行了改造:节点的结构与节点等待机制.在结构上引入了头 ...

  7. VR ( Virtual Reality )、AR(Augmented Reality)、MR(Mix Reality)和CR(Cinematic Reality)是什么鬼?

    整个社会对虚拟现实的研究和开发源于上个世纪六十年代,计算机图形学.人机接口技术.图像处理与模式识别.多传感技术.语音处理与音响技术.高性能计算机系统.人工智能等领域在之后半个世纪取得了长足的发展为虚拟 ...

  8. 安装过程错误[INS-30131]

    问题:Oracle Database 安装过程错误[INS-30131]   原因:安装用户没有对临时文件夹的读写权限   解决方案:   1.以管理员身份运行cmd.exe 2.输入命令(需启动Se ...

  9. 阿里云ECS安装lnmp环境-转载自:http://ninghao.net/blog/1368

    远程控制你的服务器 远程控制 Linux 类型的系统的服务器,比如 CentOS 系统的服务器,一般不像 Windows 服务器那样,使用图形界面的远程控制.我们需要使用命令行工具,远程连接到服务器, ...

  10. Css中的两个重要概念:块状元素和内联元素

    一.display:block display:block就是将元素显示为块级元素,一般是其他元素的容器,可容纳内联元素和其他块状元素,块状元素排斥其他元素与其位于同一行,宽度(width)高度(he ...