旋转和平移是2个基础的动画效果,也是复杂动画的基础。

如果是普通的页面只要设置transform属性很容易实现平移+旋转的组合效果,达到自旋转下落的效果。因为操作的直接是动作元素本身很容易理解。

但是在canvas中,如果要实现一个旋转,是需要旋转画布来实现。

如下图:

实现代码

function createRect() {var anger = 0,//旋转角度rectW = 200,//宽度rectH = 200,//高度posy = 0;cxt.strokeStyle = 'black';cxt.strokeRect(100, posy, rectW, rectH);setInterval(function() {cxt.beginPath();cxt.strokeStyle = 'red';cxt.save();//保存此时状态/*移动画布原点到旋转物体的中点*/cxt.translate(100 + rectW / 2, posy + rectH / 2);/*旋转画布*/cxt.rotate(anger * Math.PI / 180);/*将画布原点回归到(0,0) 注意这里虽然画布原点还原了但是角度没有还原*/cxt.translate(-100 - rectW / 2, -posy - rectH / 2);cxt.strokeRect(100, posy, rectW, rectH);/*还原画布*/cxt.restore();anger = anger + 5;//每帧的变化角度posy = posy + 5;}, 16)
}

这里save() 和 restore()的属性还是比较重要的。用来还原画布位置。而不用通过计算返回。非常方便。

转载于:https://www.cnblogs.com/enmeen/p/5742596.html

canvas浅谈 实现简单的自旋转下落相关推荐

  1. BIT的浅谈,简单理解

    转博客园(地址):http://www.cnblogs.com/justforgl/archive/2012/07/27/2612364.html 先看一下这个图,可以找到一定的规律: 数组A的下标  ...

  2. 浅谈Git的基本工作流程与简单的Git命令

    浅谈Git的基本工作流程与简单的Git命令 什么是GIT? 定义:是一个开源的分布式版本控制工具 功能: 代码备份 版本控制 协同开放 代码追溯 场景: 团队协同开放项目 Git仓库工作流程 Git常 ...

  3. 浅谈html的语义化和一些简单优化,html标签语义化

    1.什么是语义化? 必应网典的解释 语义化是指用合理HTML标记以及其特有的属性去格式化文档内容.通俗地讲,语义化就是对数据和信息进行处理,使得机器可以理解. 语义化的(X)HTML文档有助于提升你的 ...

  4. 2-路插入排序c语言算法,浅谈2路插入排序算法及其简单实现

    2路插入排序算法是在直接插入排序算法的基础上增加了一个辅助数组,其目的是减少排序过程中的移动次数,需要增加n个记录的辅助空间. 难点可能在于对取余的考虑吧,可以把辅助数组看成一个环状空间,这样就能更好 ...

  5. 浅谈html的语义化和一些简单优化,浅谈HTML的语义化和一些简单优化

    下面小编就为大家带来一篇浅谈HTML的语义化和一些简单优化.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 1.什么是语义化? 必应网典的解释 语义化是指用合理HTML标 ...

  6. 浅谈操作系统是如何工作的及简单的进程调度的linux实现

    浅谈操作系统是如何工作的及简单的进程调度的linux实现 1)进程的启动和切换机制 a)进程的启动机制 保存ebp的值到栈, 将esp的值保存在prev->thread.sp,在下一步esp的值 ...

  7. laytpl语法_浅谈laytpl 模板空值显示null的解决方法及简单的js表达式

    浅谈laytpl 模板空值显示null的解决方法及简单的js表达式 laytpl 模板语法 {{ d.field }} 输出一个普通字段,不转义html 官方的说明 但d.field 为空时会显示nu ...

  8. 浅谈简单线性回归(Simple linear regression)part3SEE,MSE,SSE的关系

    浅谈简单线性回归(Simple linear regression)part3SEE,MSE,SSE的关系 MSE→均方根误差(各数据偏离真实值 差值的平方和 的平均数 )→Meansquared e ...

  9. 浅谈cocos2d游戏中天气系统的简单实现

    一.前言 此博客由一个新手游戏程序编写,没有高深的技术,基本是天气效果表现和代码设计的浅谈,如果有更好的实现方法,欢迎指正. 二.背景 该系统设计背景:2D游戏.正交45度表现地图.以及同一张地图上存 ...

最新文章

  1. 生成静态文件的新闻系统核心代码
  2. 启用不安全的HTTP方法解决方案
  3. 【数据结构与算法】之深入解析Base64编码的实现原理
  4. PWN-PRACTICE-BUUCTF-27
  5. 求助!C++ 实践之引入外部头文件失败
  6. NOIP 2013 day2
  7. WPF 自己动手来做安装卸载程序
  8. C - Bone Collector(背包问题)(01背包)
  9. 2021-09-10二叉树的层序遍历
  10. 怎么远程传输大文件?
  11. 微信小程序 ES6语法
  12. 基于vue-router的matched实现面包屑功能
  13. 自定义桌面右键菜单-Win 10 版
  14. 爬取飞卢小说网的小说
  15. 每日一题:【LeetCode】495.提莫攻击
  16. supervisor查询状态报错
  17. Android Studio教学视频118集(共18.2G)
  18. PPT怎么转换成PDF?有哪些转换方法?
  19. 《机器学习实战》chap1 机器学习概览
  20. Android串口通信(基于Tiny6410平台)

热门文章

  1. 理光打印机如何设置邮件服务器,技术员帮您win10系统网络共享理光打印机的设置方法的操作办法...
  2. k均值聚类的python代码_k-均值聚类Python代码实现
  3. java怎么输出liststring_春招|春招实习上岸,分享面筋回报社区(Java、Python)...
  4. c++ 获取系统时间_错过长假,我还有时间做近视手术么?
  5. 断言失败的vc++文档_了解C / C ++中的断言
  6. java zip 文件夹_Java Zip文件文件夹示例
  7. c#中如何删除数组中的元素_C中的数组
  8. android 开发套件_Android套件
  9. Android ViewPager示例教程
  10. 具有IDE或IDE插件的Spring Boot Initilizr