程序运行截图如下:

旋转下:

代码如下:


import * as Two from "JS/two";
import * as $ from "JS/jquery";let isPressed = false;
let originalPositionX = 0;
let originalPositionY = 0;
let two;
let mouse;export function drawGraphic(){let elem = document.getElementById("draw-shapes");let params = {fullscreen: true,autostart: true}two = new Two(params).appendTo(elem);mouse = new Two.ZUI(two.scene);mouse.addLimits(0.1, 10);let $stage = $(two.renderer.domElement);$stage.bind('mousewheel wheel', function(event){let e = event.originalEvent;e.stopPropagation();e.preventDefault();let dy = (e.wheelDeltaY || -e.deltaY) / 1000;mouse.zoomBy(dy, e.clientX, e.clientY);});$stage.bind('mouseup', function(event){isPressed = false;});$stage.bind('mouseout', function(event){isPressed = false;})$stage.bind('mousemove', function(event){if(isPressed){let boolX = event.clientX - originalPositionX;let boolY = event.clientY - originalPositionY;mouse.graphicMove(boolX, boolY);originalPositionX = event.clientX;originalPositionY = event.clientY;}});$stage.bind('mousedown', function(event){isPressed = true;originalPositionX = event.clientX;originalPositionY = event.clientY;});//移动端触碰开始$stage.bind('touchstart', function (event){originalPositionX = event.changedTouches[0].pageX;originalPositionY = event.changedTouches[0].pageY;isPressed = true;});$stage.bind('touchend', function(event){isPressed = false;});$stage.bind('touchmove', function(event){let currentX = event.changedTouches[0].pageX;let currentY = event.changedTouches[0].pageY;let boolX = currentX - originalPositionX;let boolY = currentY - originalPositionY;mouse.graphicMove(boolX, boolY);originalPositionX = currentX;originalPositionY = currentY;});//移动端触碰结束let text = two.makeText("Hello", 0, 0);text.size = 20;text.fill = "red";text.rotation = 90 * Math.PI / 180;//查询let corona = makeTriangle(two, 100);corona.noStroke();corona.fill = "red";corona.translation.set(200, 200);let tip = makeTip(two, "错误", 'rgb(255, 255, 255)', 90);tip.translation.set(500, 500);
}function makeTriangle(two, size) {let tri = two.makePath(-size / 2, 0, size / 2, 0, 0, size);return tri;
}function makeTip(two, text, textColor, rotation){let group = two.makeGroup();let len = 100;let tip = two.makePath(-len / 2, -len / 3, -len / 2, -len, len / 2, -len, len / 2, -len / 3 , 0, 0 );tip.fill = 'red'tip.rotation = rotation * Math.PI / 180;group.add(tip);let txt = two.makeText(text, 0, -len / 1.8);txt.size = 20;txt.fill = textColor;group.add(txt);group.noStroke();//连文字一起旋转//group.rotation = rotation * Math.PI / 180;return group;
}

此处的三角形关键代码:

点1:(-size / 2, 0)

点2:(size / 2, 0)

点3:(0, size)

这里是一个倒三角形。

下面是tip的关键代码:

Web前端笔记-two.js画三角形及画tip含tip旋转相关推荐

  1. Web前端笔记-two.js加载图片

    目前关于two.js的资料,国内的不是很多,项目中要加载图片,官方文档上没有关于加载图片的相关资料,但在github生态圈找到了,在此记录下. 如下图片: 图片路径: 在JS文件中导入图片: impo ...

  2. Web前端笔记-two.js实现坐标定位(动画效果非瞬移定位)

    先来看下程序运行截图: 画图相关代码: ;import * as Two from "JS/two"; import * as $ from "JS/jquery&quo ...

  3. Web前端笔记-two.js图形旋转动画的2种实现方式

    这里有两种方式! 第一种是使用setInterval: 代码如下: let time = setInterval(function(){if(sun.sun.rotation >= TWO_PI ...

  4. Web前端 笔记 (21-45)

    Web前端 笔记 (21-45) 21.嵌套列表 1.概念 2.有(无)序列表嵌套 3.定义列表嵌套 22.表格标签 1.种类 2.举例 未加语义化标签 添加语义化标签 23.表格属性 1.常见表格属 ...

  5. Web 前端学习 之js概述

    Web 前端学习 之js概述 1.JavaScript 介绍 Javascript 语言诞生主要是完成页面的数据验证.因此它运行在客户端,需要运行浏览器来解析执行JavaScript 代码. JS 是 ...

  6. 前端html继承的方式,好程序员web前端教程之JS继承实现方式解析

    好程序员 web 前端教程 之JS 继承实现方式解析 , JS 是 Web 前端三要素之一,也是每一个初学前端的同学遭遇的第一条拦路虎.很多人反应 JS 学习不易,各类知识点概念及应用常常让人抓耳挠腮 ...

  7. web程序前后台功能实现_好程序员web前端教程之JS继承实现方式解析

    好程序员web前端教程之JS继承实现方式解析,JS是Web前端三要素之一,也是每一个初学前端的同学遭遇的第一条拦路虎.很多人反应JS学习不易,各类知识点概念及应用常常让人抓耳挠腮.在接下来的北京Web ...

  8. 引入js_好程序员web前端教程分享js中的模块化一

    好程序员web前端教程分享js中的模块化一:我们知道最常见的模块化方案有CommonJS.AMD.CMD.ES6,AMD规范一般用于浏览器,异步的,因为模块加载是异步的,js解释是同步的,所以有时候导 ...

  9. 怎么更好掌握Web前端技术?JS的跨域是怎么回事?

    怎么更好掌握Web前端技术?JS的跨域是怎么回事?JavaScript跨域是指通过JS在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过JS获取页面中不同域的框架中(if ...

最新文章

  1. [Android编程心得] Camera(OpenCV)自动对焦和触摸对焦的实现
  2. 关于multimap和multiset
  3. boost::contract模块实现check宏的测试程序
  4. OS- -文件系统(四)
  5. Java 9:对可选的增强
  6. 放射性渐变色html,html5 canvas绘制放射性渐变色效果
  7. Netty ChannelOption 解释
  8. Android实现XML解析技术 (转载http://www.cnblogs.com/hanyonglu/archive/2012/02/28/2370675.html)...
  9. Effective C++ 精要(第五部分:实现)
  10. 【vim入门笔记】基本操作与插件安装
  11. 3Dmax软件安装问题解决方法
  12. 真北方向、坐标北向以及磁北向
  13. 高斯克吕格投影,将经纬度转换为投影坐标
  14. Pytorch中Conv2d的使用
  15. 第一次滑雪小记——杭州临安大明山滑雪场
  16. 万物皆可DAO?一文带你全方位解读DAO类型
  17. 小野猫(xiaoyemaokeji)用python写了一个hello world。
  18. CT原理与技术(生物医学工程专业)
  19. # 科研牛人告诉研究生怎么看文献,怎么写论文csdn
  20. 把思科端口速率改为不协商_端口汇聚—TRUNK技术介绍

热门文章

  1. DDD~DDD从零起步架构说明
  2. 【转】vc6.0移植到VS2010遇到的问题,散分给大家,虽然分不多,各位帮忙
  3. linux find 用法详解 + 实例
  4. elinks文字浏览器
  5. 程序员的搞笑日常:写给1024的程序员们,现在的你们还在加班吗?
  6. 【转载】早点长大的飞秋
  7. 体验微软反间谍软件及恶意软件清除工具
  8. 四大游戏编程网站,边玩游戏,边学Python
  9. 剑三千岛湖服务器是不是维护了,《剑网3》4.10维护公告:疆域重新进行地理划归...
  10. c调用java jar_C#调用java类、jar包方法。