博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
网页版几何画板开发笔记(一)
阅读量:6292 次
发布时间:2019-06-22

本文共 1284 字,大约阅读时间需要 4 分钟。

hot3.png

近期在做项目网页版简易几何画板 geo.js. 时间一长, 加上年纪大了, 就容易忘记, 所以这里写下来些笔记.

实现了一个全局变量$G (window.$G), 将其它(大部分的)类和量都放在该名字空间下面,

这么做的目的是减少对全局名字空间的占用, 减少名字冲突的可能性.

对于画板, 实现为类 GeoPad(全名为 $G.GeoPad). 在一个网页中, 可以同时显示多个画板,

每个画板创建一个GeoPad的实例. 这是为了支持在同一个网页显示多个几何图形的需求.

每一个画板对象GeoPad对应网页上的一个几何图形显示区域, 这个显示区域一般是DIV里面

容纳着canvas元素. 当前IE9以上,firefox,chrome,safari等浏览器都支持HTML5 的canvas
元素, 我也试验过, 这些浏览器是可以运行这个网页画板.

在网页上使用GeoPad的方法, 设计为通过js, 先创建GeoPad 的新实例, 而后绑定(bind)到

一个HTML元素(如DIV) 上, 然后加载图形文件(文本)给该GeoPad. 创建过程也可以根据
情况细微调整, 总体上关键是绑定,加载环节. 见函数 GeoPad.create_pad(), 相当于一个
静态函数(public static).

函数 bind_canvas(), 全写为 $G.GeoPad.prototype.bind_canvas(), 用于将指定 HTML5

canvas 元素绑定到 this GeoPad 实例上. 绑定使得图形显示在该canvas, 该canvas 的鼠标
等事件也发送到此 GeoPad 中进行处理. 由于要支持一个网页多个GeoPad, 这一绑定是必不
可少的.

当前绑定的事件有: mouse_down, mouse_move, mouse_up, key_down. 根据需要, 可能

会绑定更多事件.

画板中显示的对象统称为几何对象(Geo Object), 主要的几种为点,线,圆,多边形, 还有以此

方式实现的其它对象, 如标记, 文本, 按钮等. 当前几何对象框架需要仔细考察, 以支持多样
的,变化着的需求.

几何对象统一使用基类 ObjBase, 这个稍后看.

几何对象在GeoPad 中主体使用双向链表存放, 与链表相关的数据如下:

   在对象中, 存放在 ObjBase 中的属性有: prev_obj, next_obj 分别表示链表中前一个对象,
后一个对象; boolean 的 __in_pad 属性用于跟踪是否已经插入到链表中, 用于避免重复插入;
pad 属性表示其所属的实际 GeoPad.
  在 GeoPad 类中, 实现链表的是 head_obj, tail_obj 属性, 分别表示链表中第一个对象,
最后一个对象. 如果还没有任何对象, 则它们的值为 null.

由于此链表是主要数据结构, 关于它的函数也需要仔细笔记下来.

 

 

 

转载于:https://my.oschina.net/u/232554/blog/173191

你可能感兴趣的文章
mysql 时间函数 时间戳转为日期
查看>>
索引失效 ORA-01502
查看>>
Oracle取月份,不带前面的0
查看>>
Linux Network Device Name issue
查看>>
IP地址的划分实例解答
查看>>
如何查看Linux命令源码
查看>>
运维基础命令
查看>>
入门到进阶React
查看>>
SVN 命令笔记
查看>>
检验手机号码
查看>>
重叠(Overlapped)IO模型
查看>>
Git使用教程
查看>>
使用shell脚本自动监控后台进程,并能自动重启
查看>>
Flex&Bison手册
查看>>
solrCloud+tomcat+zookeeper集群配置
查看>>
/etc/fstab,/etc/mtab,和 /proc/mounts
查看>>
Apache kafka 简介
查看>>
socket通信Demo
查看>>
技术人员的焦虑
查看>>
js 判断整数
查看>>