ShapeNode

TWaver提供了一个特殊的节点twaver.ShapeNode。这是一个节点扩展,与普通节点(Node)之间主要区别是:普通节点主要通过图片来表示一个物体,而形状节点通过一个任意形状来表示一个物体。形状节点由一系列点组成,这些点连接成一个形状。通过千变万化的形状,可以用来表示很多特殊的数据,比如一个国家或者地区、一个总线等等。

说这个你可能不太懂,但是说起SVG你是不是就懂了,它可以通过一系列的点,绘制成一个图形。ShapeNode的功能类是于svg,通过它,你自己自定义一个属于自己的地图,或者攻略图等。

特殊方法

为了方便节点的操作,在相对于普通节点上提供了常用的方法:

  • addPoint() 添加点
  • firePointsChange() 派发点的更改事件
  • getLineLength() 获取ShapeNode的周长
  • getPoints() 获取所有点的集合
  • getSegments() 获取所有连线段的集合
  • removeAt() 移除参数指定的某个点
  • removePoint() 移除指定的点
  • setPoint() 设置指定序号上的点
  • setPoints() 设置多边形上点的集合
  • setSegments() 设置多边形网元上所有连线段的集合

写个代码

多边形网元和折线都是通过一系列的点来绘制的网元,但是不同的是折线它是一条Link,必须有起始和结束节点,而且必须是一条连续的路径。而多边形网元的点之间可以move to,这样可以是一条不连续的路径。

我们可以指定片段的绘制方式(segments),使ShapeNode表现更丰富的效果,如曲线(QuadTo),间断(moveTo)等。绘制方式有三种,移动到(moveTo)、直线(lineTo)和曲线(quadto)。

var shapeNode1 = new twaver.ShapeNode({ name: 'ShapeNode1', }); shapeNode1.s('vector.fill.color', '#61b6d8'); shapeNode1.s('vector.gradient', 'radial.center'); shapeNode1.addPoint({ x: 30, y: 10 }); shapeNode1.addPoint({ x: 80, y: 10 }); shapeNode1.addPoint({ x: 100, y: 90 }); shapeNode1.addPoint({ x: 10, y: 90 }); shapeNode1.addPoint({ x: 30, y: 10 }); box.add(shapeNode1); var shapeNode2 = new twaver.ShapeNode(); shapeNode2.setName('shapeNode2'); shapeNode2.addPoint({ x: 130, y: 110 }); shapeNode2.addPoint({ x: 180, y: 110 }); shapeNode2.addPoint({ x: 200, y: 190 }); shapeNode2.addPoint({ x: 110, y: 190 }); shapeNode2.addPoint({ x: 130, y: 110 }); shapeNode2.s('vector.fill.color', '#ec6c00'); shapeNode2.s('vector.gradient', 'radial.east'); var segments = new twaver.List(); segments.add("moveto"); segments.add("quadto"); segments.add("quadto"); shapeNode2.setSegments(segments); box.add(shapeNode2); var link = new twaver.Link(shapeNode1, shapeNode2); box.add(link);

最终形成的效果

TWaver最强大的ShapeNode功能相关推荐

  1. 老司机都在用的浏览器,体积小功能齐全,直呼内行

    现在市面上的浏览器简直是多不胜数,虽然数量多,但是好用的并不多.尤其是某些大厂的浏览器,无用的功能越来越多,越来越臃肿,体积也越来越大,使用体验还不好,有时候甚至不如一些小众浏览器.今天给大家安利2款 ...

  2. 如果你的Mac系统开机启动管理,那么Startupizer2这个功能一定要试试 ~

    startupizer Mac一款Mac OS平台上的开机启动项管理工具为用户们提供最强大的系统管理功能,简单的操作界面让你快速上手使用,大大减少你的开机时间!用户通过一次配置就可以满足不同场景的需要 ...

  3. nero linux iso,NeroLINUX下载_NeroLINUX官方下载_NeroLINUX4.0.0.0-华军软件园

    Nero Linux 3是Linux 操作系统上权威的刻录应用程序.采用业界领先的Nero Burning ROM引擎,Nero Linux 3成为Linux上最强大而多功能的刻录软件,而且也是唯一一 ...

  4. 超详细的Java面试题总结(四 )之JavaWeb基础知识总结

    系列文章请查看: 超详细的Java面试题总结(一)之Java基础知识篇 超详细的Java面试题总结(二)之Java基础知识篇 超详细的Java面试题总结(三)之Java集合篇常见问题 超详细的Java ...

  5. 《Adobe Photoshop CC经典教程》—第1课1.2节使用工具

    本节书摘来自异步社区<Adobe Photoshop CC经典教程>一书中的第1课1.2节使用工具,作者[美]Adobe公司,更多章节内容可以访问云栖社区"异步社区"公 ...

  6. Delphi XE5 for Android (十)

    我觉得Delphi最强大的的功能之一就是开发数据库三层应用的DataSnap,在Android上的实现,首先是完成服务器的设计: (1)利用向导完成DataSnap服务器的框架,如下图: 由于是实验, ...

  7. Unity3D协程(转)

    这篇文章转自:http://blog.csdn.net/huang9012/article/details/38492937 协程介绍 在Unity中,协程(Coroutines)的形式是我最喜欢的功 ...

  8. 【转】Java学习---Java Web基础面试题整理

    [原文]https://www.toutiao.com/i6592359948632457731/ 1.什么是Servlet? 可以从两个方面去看Servlet: a.API:有一个接口servlet ...

  9. SQL 经典回顾:JOIN 表连接操作不完全指南

    也许最强大的SQL功能是JOIN操作.这让所有非关系数据库羡慕不已,因为当你想"合并"两个数据集时,这个概念是如此简单,并且又普遍适用. 简单地说,连接两个表,就是将一个表中的每一 ...

最新文章

  1. 开工快乐!AI内参邀你继续学习,并送上50元优惠券!
  2. Google advertiser api开发概述——部分失败
  3. JAVA入门笔记·我的第一个JAVA程序
  4. Servlet应用之细节
  5. Swift 和 Objective-C 混编
  6. iview组件库 - 穿梭栏设置
  7. SQL Server删除整个数据库中表数据的方法(不影响表结构)
  8. DEV控件:gridControl常用属性设置
  9. Selenium Webdriver 简易教程
  10. 从键盘上输入一个字符串并保存在str1中,并把str1中下表为偶数的字符保存到str2中
  11. linux环境下protobuf的安装与使用
  12. java+构造函数+native_java中native的用法
  13. Python游戏篇:细节之大型游戏爆炸效果(附代码)
  14. python创意小作品代码-超全代码详解 Python 制作精美炫酷图表教程
  15. 为什么街头篮球总提示服务器维护,我玩街头篮球,但这几天它总是说连接不上服务器怎么回事?...
  16. sql查询语句分支语句
  17. 如何防御DOS和DDOS攻击
  18. 小米生态链企业商米科技完成数亿元C+轮融资,蚂蚁金服投资...
  19. 计算机网络实验八——聊天程序
  20. itest英语考试bug_iTEST爱考试

热门文章

  1. 百度输入法重大BUG:内存占用随用户词库增大而暴涨
  2. MacBook Air M2无需虚拟屏启用Hidpi+任意缩放(22年9月)
  3. imx6q mxc 的 framebuffer 初始化过程
  4. python:实现DBSCAN聚类算法(附完整源码)
  5. 如何在线批量将XPS转PDF
  6. 【开发记录】基于C++,使用QT+VS编写软件
  7. 即席查询——Presto
  8. java中常见的英语单词
  9. [附源码]计算机毕业设计JAVA卡通动漫商城系统
  10. 张力控制PID增益(Kp)自适应算法详解(含SCL和梯形图完整源代码)