动画原理——图形填充

书籍名称:HTML5-Animation-with-JavaScript

书籍源码:https://github.com/lamberta/html5-animation


1.渐变填充

渐变填充有线性渐变,和径向渐变两种。因为是用法,我们直接在代码中分析会更直观

一.

<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Gradient Fill 1</title>
    <link rel="stylesheet" href="../include/style.css">
  </head>
  <body>
    <header>
      Example from <a href="http://amzn.com/1430236655?tag=html5anim-20"><em>Foundation HTML5 Animation with JavaScript</em></a>
    </header>
    <canvas id="canvas" width="400" height="400"></canvas>

    <script>
    window.onload = function () {
      var canvas = document.getElementById(‘canvas‘),
          context = canvas.getContext(‘2d‘),
          pt1 = {x: 0, y: 0},               //gradient start point
          pt2 = {x: 100, y: 100},           //gradient end point
          //创建渐变,前pt为开始坐标,p2为结束坐标
          gradient = context.createLinearGradient(pt1.x, pt1.y, pt2.x, pt2.y);

      //开始颜色为白,结束颜色为红
      gradient.addColorStop(0, "#ffffff");
      gradient.addColorStop(1, "#ff0000");

      //填充
      context.fillStyle = gradient;
      context.fillRect(0, 0, 100, 100);
    };
    </script>
  </body>
</html>

二.多种颜色

<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Gradient Fill 2</title>
    <link rel="stylesheet" href="../include/style.css">
  </head>
  <body>
    <header>
      Example from <a href="http://amzn.com/1430236655?tag=html5anim-20"><em>Foundation HTML5 Animation with JavaScript</em></a>
    </header>
    <canvas id="canvas" width="400" height="400"></canvas>

    <script>
    window.onload = function () {
      var canvas = document.getElementById(‘canvas‘),
          context = canvas.getContext(‘2d‘),
          pt1 = {x: 100, y: 100},           //gradient start point
          pt2 = {x: 200, y: 200},           //gradient end point
          gradient = context.createLinearGradient(pt1.x, pt1.y, pt2.x, pt2.y);

      //white to blue to red
      gradient.addColorStop(0, "#ffffff");
      gradient.addColorStop(0.5, "#0000ff");
      gradient.addColorStop(1, "#ff0000");

      context.fillStyle = gradient;
      context.fillRect(100, 100, 100, 100);
    };
    </script>
  </body>
</html>

三.透明

<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Gradient Fill Radial</title>
    <link rel="stylesheet" href="../include/style.css">
  </head>
  <body>
    <header>
      Example from <a href="http://amzn.com/1430236655?tag=html5anim-20"><em>Foundation HTML5 Animation with JavaScript</em></a>
    </header>
    <canvas id="canvas" width="400" height="400"></canvas>

    <script>
    window.onload = function () {
      var canvas = document.getElementById(‘canvas‘),
          context = canvas.getContext(‘2d‘),
          c1 = {x: 150, y: 150, radius: 0},  //gradient start circle
          c2 = {x: 150, y: 150, radius: 50}, //gradient end circle
          gradient = context.createRadialGradient(c1.x, c1.y, c1.radius,
                                                    c2.x, c2.y, c2.radius);
      //all black alpha blend
      gradient.addColorStop(0, "#000000");
      gradient.addColorStop(1, "rgba(0, 0, 0, 0)"); //alpha required

      context.fillStyle = gradient;
      context.fillRect(100, 100, 100, 100);
    };
    </script>
  </body>
</html>
时间: 2024-11-19 05:13:37

动画原理——图形填充的相关文章

JS 实现无缝滚动动画原理(初学者入)

这段时间在教培训班的学生使用原生javascript实现无缝滚动的动画案例,做了这个原理演示的动画,分享给自学JS的朋友!博主希望对你们有帮助! 在讲解之前先看一下demo: demo:https://224137748.github.io/JS_warehouse/lunbo/domo.HTML源码:https://github.com/224137748/JS_warehouse/blob/master/lunbo/domo.HTML ps: 上面和下面的滚动进度是一致的,上面红色框是为了演

SVG描边动画原理

SVG描边动画原理其实很简单,主要利用以下两个属性 stroke-dasharray 制作虚线,使得黑白相间, stroke-dashoffset 使得虚线向开头偏移,这里的1500不精确,是我随便取的,下文介绍通过JS获取长度. 动画就是减少虚线偏移,那么实线就会慢慢漏出来了 JS获取长度 var path = document.querySelector('path'); var length = path.getTotalLength(); 然后改变path.style.strokeDas

理解SVG的图形填充规则

SVG的图形填充规则通过fill-rule属性来指定. 有效值:   nonzero | evenodd | inherit 默认值:   nonzero fill-rule属性用于指定使用哪一种算法去判断画布上的某区域是否属于该图形“内部” (内部区域将被填充).对一个简单的无交叉的路径,哪块区域是“内部” 是很直观清除的.但是,对一个复杂的路径,比如自相交或者一个子路径包围另一个子路径,“内部”的理解就不那么明确了. nonzero 字面意思是“非零”.按该规则,要判断一个点是否在图形内,从

动画原理

动画原理 动画的基本原理 : 让盒子的 offsetLeft   +  步长 原理 匀速运动封装函数 1 function animate(obj,target){ 2 var speed = obj.offsetLeft < target ? 5 : -5; // 用来判断 应该 + 还是 - 3 obj.timer = setInterval(function() { 4 var result = target - obj.offsetLeft; // 因为他们的差值不会超过5 5 obj.

从Sprite3D理解3D骨骼动画原理

为了能够更好的使用cocos为我们提供的Sprite3D,我和大家分享一下Sprite3D中关于骨骼动画原理的部分,本文使用cocos2d-x 3.2版本,这是cocos首次出现3D骨骼动画的版本,相对与本文写出来时候最新的3.5版本,由于没有其他比如灯光等功能,3D骨骼动画模块读起来要更加的清晰.如果文章有纰漏或者错误的地方,也请大家指教. 目前引擎支持3种动画格式,分别是.obj,.c3b,.c3t,由于.obj没有骨骼,.c3b是二进制,而.c3t是json格式,所以本文就用官方test中

Unity3D 骨骼动画原理学习笔记

最近研究了一下游戏中模型的骨骼动画的原理,做一个学习笔记,便于大家共同学习探讨. ps:最近改bug改的要死要活,博客写的吭哧吭哧的~ 首先列出学习参考的前人的文章,本文较多的参考了其中的表述: 1.骨骼动画详解 :http://blog.csdn.net/ccx1234/article/details/6641944,不过这篇文章的原文已经被csdn封了:D,可以看看对应的转载的文章也行 2.OpenGL10-骨骼动画原理篇:http://www.cnblogs.com/zhanglitong

骨骼动画原理(转载)

视频教程请关注 http://edu.csdn.net/lecturer/lecturer_detail?lecturer_id=440 本例程展示如何建立骨骼动画,有些人叫蒙皮动画 定义如下: 当前有两种模型动画的方式:顶点动画和骨骼动画.顶点动画中,每帧动画其实 就是模型特定姿态的一个“快照”.通过在帧之间插值的方法,引擎可以得到平滑 的动画效果.在骨骼动画中,模型具有互相连接的“骨骼”组成的骨架结构,通过 改变骨骼的朝向和位置来为模型生成动画. 骨骼动画比顶点动画要求更高的处理器性能,但同

android动画之从源码角度分析动画原理

以前一直不懂android的动画机制,android系统是如何实现动画的,所以导致只会做一些android系统已经为我们封装好的动画即:AlphaAnimation, TranslateAnimation, ScaleAnimation,RotateAnimation以及这些动画混合起来使用,其实有android系统为我们提供的这几种动画是可以满足我们平时的基本需求了,但是要做一些高级的动画就是不可能的,比如3D动画,所以就看了一下android系统所带动画的源码,做了一些总结,下面就是我对动画

关于AnyLogic中动画指导图形的问题

我刚刚开始学习AnyLogic这个软件,看的是韩鹏翻译的<三天学会AnyLogic>.在看的时候遇到了一个问题,就是在里面提到了动画指导图形的问题(书中是以AnyLogic6为例,我用的是8). 里面在给智能体添加动画位置的时候,使用的是演示里的矩形.折线工具来实现动画的演示.如下图,先是创建了一个矩形,然后再修改智能体的动画指导图形属性. 在智能体的动画指导图形里面输入刚才创建的矩形名称,动画类型选择 “包”就可以在运行的时候将该智能体的动画演示放到矩形里面来. 但是在我使用的这个版本里面,