这是学习Twaver第一天

首先要明白Twaver是可以做什么的:
官方文档:欢迎请点击阅读
我这里主要学习:
开发指南 – TWaver HTML5 2D

基本概念

TWaver HTML5(以下简称TWaver)使用HTML5技术和javascript语言,可在支持HTML5的浏览器上进行绘图。

使用TWaver前,需熟悉几个基本概念:图元(Element)、容器(DataBox)和画布(Network)。

图元:图形中的各种基本元素,如节点(Node)、连线(Link)等;
容器:图元都统一放置在一个容器(DataBox)中进行管理,如同“装鸡蛋的篮子”一样。它负责图元的增/删/改/查等管理操作;
画布:图元最终都绘制在画布(Network)组件上。Network是最终用户看到的图形组件,负责图形画面的具体绘制和交互;

官方建议:Note:以上概念是熟练使用TWaver需要掌握的最基本概念,请熟练掌握。

我们需要明白
1.图元是最小的单元;
2.图元需要放置到容器中;
3.最终图元会渲染到画布上即可;

下面看官方的例子:

function init() {    var box = new twaver.ElementBox();var network = new twaver.vector.Network(box);  document.body.appendChild(network.getView());network.adjustBounds({x:0, y:0, width:500, height:500});var node1 = new twaver.Node();node1.setName("TWaver");node1.setLocation(100, 100);box.add(node1);  var node2 = new twaver.Node();node2.setName("HTML5");node2.setLocation(300, 200);box.add(node2);  var link = new twaver.Link(node1, node2);link.setName("Hello!");link.setToolTip("<b>Hello!</b>");box.add(link);
}

new twaver.ElementBox:创建一个容器;
new twaver.vector.Network:创建一个画布,并将容器传入;
document.body.appendChild(network.getView());:将画布append到页面上;
network.adjustBounds:设置画布大小;
new twaver.Node:创建node节点;
new twaver.Link创建一根线
box.add:将图元添加到容器中;

react版本

首先我这里引入的是Twaver.js,所有我在webpack中配置了模块便捷引入
webpack.config.js

   externals: {"$": "window.$","twaver": "window.twaver","license2d": "window.xxxxxxlicense2d",},

这样就可以使用下面的形式在组件内部使用了,但是前提是需要在index.html中使用script已经引入;

      <script src="../../static/jquery.min.js"></script><script src="../../static/twaver.js"></script><script src="../../static/xxxxxxlicense2d.js"></script>

在react组件中直接commonJSd的形式引入即可:

const $ = require('$');
const twaver = require('twaver');

首先封装了一下上面的几个方法:

const twaver = require('twaver');
/*** 创建一个dataBox容器* 容器中可以add图元*/
export const returnElementBoxFun = () => new twaver.ElementBox()/*** 创建一个画布 network对象* @param {ElementBox} box  创建一个画布 network对象*/
export const returnNetworkFun = (box) => new twaver.vector.Network(box)/*** 创建一个容器dataBox和一个画布* 并将容器实例化画布* @returns [box,network] box network*/
export const returnElementBoxAndNetworkFun = () => {let box = returnElementBoxFun();let network = returnNetworkFun(box);return [box, network]
}/*** 用于创建一个节点* @param {ElementBox} box dataBox * @param {String} name 当前节点的name* @param {Number} x   当前节点的x坐标* @param {Number} y 当前节点的y坐标* @returns {Node} Node*/
export const returnNodeFun = (box, name, x, y) => {let node = new twaver.Node();node.setName(name);node.setLocation(x, y);box.add(node);return node
}/*** * @param {Node} node1 节点1* @param {Node} node2 节点2*/
export const returnLineFun = (node1, node2) => new twaver.Link(node1, node2)

react组件:

import React, { useEffect, useState } from 'react'
import {returnElementBoxFun,returnNetworkFun,returnElementBoxAndNetworkFun,returnNodeFun,returnLineFun,
} from './utils'
const Demo = () => {const [network, setnetwork] = useState({})const init = () => {const [box, network] = returnElementBoxAndNetworkFun()setnetwork(_ => network)// network.style.position = 'absolute';document.getElementById("testID").appendChild(network.getView());// 设置最初的大小network.adjustBounds({ x: 0, y: 0, width: 800, height: 800 });// 绘制两个点let node1 = returnNodeFun(box, '节点1', 100, 100)let node2 = returnNodeFun(box, '节点2', 200, 100)//绘制连线 参数为两个node节点let link = returnLineFun(node1, node2);link.setName("my first line");link.setToolTip('<b>这是一条line</b>');box.add(link);}useEffect(init, [])return (<><p style={{ fontSize: "20px", paddingLeft: "50px",poaddingTop:"50px" }}>tips: </p><ul style={{ fontSize: "20px", paddingLeft: "50px" }}><li> 创建一个容器dataBox</li><li> 创建一个画布network</li><li> 创建两个带有name的点</li><li> 两个点连成线</li><li> 线 add to dataBox</li></ul>{/* 画布元素需要开启定位 不然生成的图元坐标点会偏移 */}<div id="testID" style={{ width: "800px", height: "800px", border: "1px solid #ccc", position: "relative" }}></div></>)
}
export default Demo

最终结果为:

Twaver-HTML5基础学习(1)两点一线相关推荐

  1. HTML5基础学习——列表标签表单标签

    学习内容: 1.列表标签 表格是用来显示数据的,那么列表就是用来布局的. 列表最大的特点就是整齐.整洁.有序,它作为布局会更加自由和方便. 根据使用场景不同,列表可以分为三大类:无序列表.有序列表和自 ...

  2. 【html5基础学习速成】

    HTML5是Web中核心语言HTML的规范,用户使用任何手段进行网页浏览时看到的内容原本都是HTML格式的,在浏览器中通过一些技术处理将其转换成为了可识别的信息.HTML5在从前HTML4.01的基础 ...

  3. 绘画基础学习之两点透视原理

                                          前言 在上一篇中,我们讲述了透视原理中的一点透视.一点透视只有一个灭点,通过一组斜线来表示空间纵深感.下面我们将要学习的是两 ...

  4. 前端(HTML5基础学习笔记)

    以下学习路线都是基于自己看的黑马程序员视频总结而来 学习路线:HTML5 -> CSS3 -> H5C3 一.HTML简介 1. 网页 2. 常用游览器 3. Web标准(重点) 二.HT ...

  5. HTML5基础学习(7):登录表单制作、表单知识补充

    一.登录表单制作 有的时候用户需要填写信息,然后把填写完的信息交给服务器.把数据提交给服务器的动作就需要一个新的知识点:表单. (1)常见的表单控件 大部分的表单控件都是<input>编写 ...

  6. HTML5基础学习(5):百度云盘制作、简单表格制作

    一.百度云盘制作 (1)绝对地址与相对地址 绝对地址:在任何情况下,都可以找得到的地址.网页中下面图片所在的路径叫做绝对路径: <img src="http://1000phone.c ...

  7. HTML html5基础详细笔记 第一个模块

    第01章-前端核心技术-HTML5基础 学习目标 了解什么是HTML 掌握HTML标签.元素的概念 重点 掌握HTML常用头部元素的使用 重点 掌握HTML标题.段落.文本.图片等排版 重点 难点 掌 ...

  8. HTML5 在线学习网站

    HTML5 在线学习网站 摘要: HTML5的强大,让更多的人想要系统的学习它.但面对网上五花八门的搜索结果,是否无法抉择?文章作者以自己的实践经验,筛选出来11个在线学习HTML5开发的网站,让HT ...

  9. html5代码_干货篇!零基础学习HTML5要用到的6款开发工具

    HTML5不是一种编程语言,而是一种标记语言,是程序员开发网页必用的一种开发工具.目前来说HTML5技术是非常火爆的,而且有专家预估在未来的10年HTML技术都不会过时.HTML5前景好,来学HTML ...

  10. html5语句大全,html5基础语句(学习)

    起风了 兼容性问题 文档类型设定 字符设定 常用新标签 新增的input type属性值: 常用新属性 综合案例 兼容性问题 文档类型设定 document HTML http://blog.sina ...

最新文章

  1. Android中Service深入学习
  2. WebRTC 的 log 系统实现分析
  3. SAP Commerce Cloud Spartacus UI footer 区域的设计模型
  4. 使用Java高速实现进度条
  5. linux和windows输入法,关于输入法框架,这里有可以跨平台的linux和windows。。。。...
  6. 手把手教你搭建Nginx-rtmp流媒体服务器+使用ffmpeg推流
  7. java 全排序_Java排序算法全
  8. GBDT算法之流失预警模型
  9. 图像局部特征(四)--FAST-ER角点检测子
  10. 硬盘服务器作用,文件服务器有什么作用?
  11. 运用EXCEL来解线性规划问题
  12. Clang 10.0 手写静态分析器Checker
  13. c语言 char * 遍历,使用指针遍历char数组
  14. 蓝牙mesh- Features和设备类型
  15. APP被苹果App Store拒绝的79个原因
  16. idea自动去除导入但未使用的包
  17. 分享145个ASP源码,总有一款适合您
  18. 【转贴】对《高质量程序设计指南--C++/C第二版》的探讨
  19. python多目标优化_多目标优化---帕累托(Pareto)
  20. 泛函分析笔记05:赋范空间的基本概念

热门文章

  1. R、Rstudio、Rtools的下载与安装
  2. php转繁体代码,php实现简体转繁体的方法
  3. 软考网络工程师+计算机等级考试四级网络工程师--MAN标准LAN标准
  4. 没有项目经验,如何书写漂亮的简历?
  5. PC软件标题修改器 支持加壳
  6. 朝花夕拾-不务正业的大学生做了什么比赛?
  7. 华云数据入围2021新经济年度巅峰榜
  8. 【产业互联网周报】AWS 全球换帅,中国区发布战略;杨杰回应回A,中移动计划千亿投5G;全球缺芯潮持续...
  9. Distral: Robust multitask reinforcement learning.
  10. Struts1的工作流程