一 原理
在Two.js中和Canvas、SVG都不同的有这么几个地方:
Two.js中所有的旋转都是以自己为中心
Two.js中的旋转不会累加
Two.js中不使用定时器,使用Two.play()方法,类似于Flash动画(但它的底层是有定时器的,该方法每秒钟调用60次two.update()方法)
二:注意点
1: two.js 中, 图像默认的旋转中心是该图形的定位点( 图形的中心点 )
2. 如果需要旋转多个图形 , 则需要将这些图形归为一组( var group = two.makeGroup(o1, o2, …, on) );
3. 分组之后 , 该组的旋转中心默认为画布左上角 , 即(0, 0)点;
4. 需要使用 group.translation.set(x, y); 平移旋转中心
5. 平移之后该组合中所有的图形的定位点都变为 (x, y) 需要重新进行定位
6. 如果一个组合里面还有一个需要旋转的图形(该例子中为地球组合中的月球) , 则先将月球单独归为一组, 使其绕地球旋转, 然后将地球,轨道,月球组 (注意: 这里是月球组 , 而不是单个月球) 归为一组 . 绕太阳旋转;
月球的最终定位由地球组决定.
三:先绘制一个简单的模型来说明动画原理

简单模型

使用Two.js创建圆形和矩形说明动画原理

 //创建一个2D绘图对象var two = new Two({width:800,height:400,type:Two.Types.svg}).appendTo(box);//画一个圆形和矩形——矩形定位点在矩形中心var c = two.makeCircle(-200,0,100);var r = two.makeRectangle(200,0,200,200);//创建小组,平移小组的原点var g = two.makeGroup(r,c);g.translation.set(400,200);g.rotation = 30*Math.PI/180;//动画原理:调用two.play()方法var deg = 0;two.on('update',function(){deg += 3;g.rotation = deg*Math.PI/180;});two.play();

效果:

旋转中:

月亮围绕地球转,地球绕着太阳转

js部分

 var two =new Two({width:600, height: 600}).appendTo(container);var sun = two.makeCircle(0,0,100);//太阳//makeCircle(a,b,c)a,b圆心坐标   c圆的半径rsun.fill = 'red';sun.stroke = 'transparent';//太阳轨道(地球)var sunOrbit = two.makeCircle(0,0,200);sunOrbit.fill = 'transparent';sunOrbit.stroke = '#ccc';//地球var earth = two.makeCircle(200, 0, 30);earth.fill = 'blue';earth.stroke = 'transparent';// 地球轨道(月亮)var earthOrbit = two.makeCircle(200, 0, 50);earthOrbit.fill = 'transparent';earthOrbit.stroke = '#ccc';//月亮var moon = two.makeCircle(50,0, 5);moon.fill = 'gold';moon.stroke = 'transparent';moon.rotation = 0;//月亮组:月球var moonGroup = two.makeGroup(moon);moonGroup.translation.set(200,0);//地球组var earthGroup = two.makeGroup(earth,earthOrbit,moonGroup);//太阳组var sunGroup = two.makeGroup(sun,sunOrbit,earthGroup);sunGroup.translation.set(two.width/2, two.height/2);//two.update();two.bind('update', function(){moonGroup.rotation += 1*Math.PI/180;//earthGroup.rotation += 1*Math.PI/180;// 每次旋转1° })two.play();//play()方法开启自动动画播放

效果:

【小demo】 利用two.js绘制月亮围绕地球转,地球绕着太阳转相关推荐

  1. Canvas小demo(直线和曲线绘制出一个星空,月亮,绿地)

    主要包含的知识点: 直线绘制 径向渐变(绘制天空井深的情况,由蓝变黑) 五角星数学知识,点与点之间的角度为72deg... 图形变换与状态保存 弧线绘制月亮(arc,arcTo) 贝塞尔曲线绘制绿地( ...

  2. 利用Javascript动态生成表格的小demo

    利用Javascript动态生成表格的小demo 利用Javascript中data数据库存储内容动态生成表格,点击删除可对整行内容进行删除 <!DOCTYPE html> <htm ...

  3. PHP3d地球,three.js绘制地球、飞机与轨迹的效果示例

    对于three.js不太熟悉的朋友们可以参考这篇文章,threejs官网:https://threejs.org/ 首先我们来看下要实现的效果 这个缩小后的图片,下面我们来看下近距离的动态效果.. 效 ...

  4. js绘制的漂亮玫瑰曲线rose curve

    js绘制的漂亮玫瑰曲线rose curve,在数学上 玫瑰 或 罗多纳 曲线 是用极坐标绘制的正弦曲线.基本极性方程是 r = a sin(kθ) 这些曲线是由意大利数学家命名的 Guido Gran ...

  5. 打砖块小游戏php程序,利用原生js实现html5打砖块小游戏(代码示例)

    本篇文章给大家通过代码示例介绍一下利用原生js实现html5打砖块小游戏的方法.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. 前言 PS:本次项目中使用了大量 es6 语法,故对于 ...

  6. html5绘制图形幸运大转盘,微信小程序利用canvas 绘制幸运大转盘功能

    小程序对 canvas api 跟h5的不太一致 ,所以这个搞的比较久,不多说,先贴代码 Page({ /** * 页面的初始数据 */ data: { awardsConfig: {}, resta ...

  7. 运用vue.js写的表格小demo

    2019独角兽企业重金招聘Python工程师标准>>> 最近在学习vue.js,我把工作中项目里面的一个小实例用vue.js重构了下,写成一个小demo,巩固自己所学,并与大家分享, ...

  8. 小程序利用canvas 绘制图案 (生成海报, 生成有特色的头像)

    小程序利用canvas 绘制图案 (生成海报, 生成有特色的头像) 微信小程序生成特色头像,海报等是比较常见的.下面我来介绍下实现该类小程序的过程. 首先选择前端来通过 canvas 绘制.这样比较节 ...

  9. 利用Auto.js自动收集支付宝蚂蚁森林能量小程序

    最近利用Auto.js写了一个支付宝蚂蚁森林自动收集自己能量和好友能量的小程序,现在发布出来共享给大家.程序在我的华为手机上运行效果非常好. //1.解锁屏幕 unlock(); //2.启用按键监听 ...

最新文章

  1. 机器人建图、感知和交互的语义研究综述
  2. 聊聊RibbonLoadBalancerClient的choose方法
  3. 6进程原语:wait()和waitpid()函数
  4. 7-7 列出叶结点 (10 分)
  5. 面试题01.02 判定是否互为字符重排
  6. java.lang.NoClassDefFoundError 怎么解决
  7. Mac聚焦搜索Spotlight搜不到文件怎么办?
  8. bottle框架学习(四)之模版进阶使用
  9. [数据结构]P1.3 栈 Stack
  10. LINUX任务栏上出现的小窗口是怎么回事
  11. HTTP method POST is not supported by this URL解决方案
  12. 关于网页消息提示音问题解决与实现
  13. 通用扫码技术方案(微信扫码、浏览器扫码、app内部扫码)
  14. 读史可以明智_在开发中明智思考的5种方法
  15. flac转mp3方法,flac转mp3步骤
  16. spring注解开发配置spring父子容器
  17. 嵌入式学习项目实战 --- 在线词典
  18. 产品运营数据分析—SPSS数据分组案例
  19. 网络类型—p2p、MA(BMA广播型多路访问、NBMA非广播型多路访问)
  20. 计算机技术在多媒体教学中的作用,多媒体教学中的现状及作用

热门文章

  1. 雷电2接口的便携式4K/UltraHD和HD/SD IO设备
  2. 数据分析软件的类型有哪些
  3. android自定义大转盘,android 代码绘制转盘抽奖的实现
  4. ASW3642替代TS3DV642方案|ASW3642 HDMI 2.0二进一出切换器设计方案
  5. 阿里云“创客+”孵化基地落户长沙
  6. 探索Google App Engine背后的奥秘(3)- Google App Engine的简介
  7. 赫斯曼HIRSCHMANN显示器维修电脑控制器修理
  8. Android实现打地鼠小游戏
  9. 牛客网SQL大厂真题二刷小白白话总结(五)某宝店铺分析(电商模式)
  10. php小程序秒抢高并发,PHP 如何设计一个高并发高可用的秒杀或抢券系统