raphael 不支持group,里面有的set方法,只是把对象数组存起来,方法调用的时候,遍历都调用下,但是在实际需求上面感觉group还是瞒有用处的,可以控制group下面的节点的交互

比如地图区域下面的中心点和对应的文字,在悬停的时候区域变色,就只要在group结点下面定义事件就可以了,就不用区域,文字,中心点都定义事件了

本文的方法只是简单的修改了下源码,并没有完全的测试,需要实际使用的话,还有坑,主要方便借鉴

  1.在paper对象上面扩展group方法,返回的element对象上面增加"circle,ellipse,image,path,print,rect,text"方法

    

paperproto.group = function () {
var out = R._engine.group(this);
this.__set__ && this.__set__.push(out);
out.canvas = out.node;//节点添加方法,都是在canvas属性的结点上添加,所以增加属性,指向自己的结点
var t = "circle,ellipse,image,path,print,rect,text".split(",");//"circle,ellipse,image,path,print,rect,text"方法扩展
for (var i = 0, len = t.length; i < len ; i++) {
out[t[i]] = (function (key) {
return function () {
return paperproto[key].apply(this, arguments);
}
})(t[i]);
}
return out;
};

  2._engine增加group方法,svg和vml分别是

  

R._engine.group = function (svg) {
var el = $("g");
svg.canvas && svg.canvas.appendChild(el);
var res = new Element(el, svg);
res.type = "g";
return res;
};
R._engine.group = function (vml) {
var el = createNode("group");
var res = new Element(el, vml);
vml.canvas && vml.canvas.appendChild(el);
return res;
};

  3. 其实简单的修改,差不多了,在调用animate方法提示paper对象不存在

  TypeError: element.paper.customAttributes is undefined
  简单处理下,在Element方法中将paper属性指向为最外层的paper对象
  

var t = svg;
while(t.paper) {
t = t.paper;
}
this.paper = t;
//vml下自行修改下
  实际项目中group的应用,在控件组合中间感觉比较有用些,实际情况还是应该实际处理,因为group内的元素,显示顺序就固定下来了,不可能在中间插入显示其他group的元素,显示交互上面有些限制,在实际场景下还是要考虑是否是用group
 
  SVG 调整页面的 z-index 只能是通过调整页面结点的插入顺序,搜索下来也有折中的做法,就是一些svg做在不同的div中,修改div的z-index

  

raphael 支持group(简)的更多相关文章

  1. c# datatable.select() 支持group by

    不支持group by ,支持order by.如果要使用group by的话,可以使用linq,这是C#3.0的内容.给你个示例static void Main(string[] args){ Da ...

  2. HIVE 不支持group by 别名

    hive不支持group by 别名,如果需要group by 别名的情况,可以使用 别名的 值作为group by 的值

  3. 坑人的Mysql5.7 (默认不支持Group By语句)(转)

    部署项目时,项目启动完毕.点击有group by 查询语句时出现错误,界面中没有该有的数据.查询log日志发现错误 Expression #1 of SELECT list is not in GRO ...

  4. mysql5.7不支持group by的解决办法

    1.查看sql_mode select @@global.sql_mode 查询出来的值为: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DAT ...

  5. mysql 不支持group by的解决方案

    进入mysql命令行 执行如下两句语句 set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_ ...

  6. SQL中Group By的使用

    1.概述 2.原始表 3.简单Group By 4.Group By 和 Order By 5.Group By中Select指定的字段限制 6.Group By All 7.Group By与聚合函 ...

  7. 学习RaphaelJS矢量图形包--Learning Raphael JS Vector Graphics中文翻译(一)

    (原文地址:http://www.cnblogs.com/idealer3d/p/LearningRaphaelJSVectorGraphics.html) 前面3篇博文里面,我们讲解了一本叫做< ...

  8. SQL中Group By 的使用

    1.概述 “Group By”从字面意义上理解就是根据“By”指定的规则对数据进行分组,所谓的分组就是将一个“数据集”划分成若干个“小区域”,然后针对若干个“小区域”进行数据处理. 2.原始表 3.简 ...

  9. group by的使用

    1.概述 2.原始表 3.简单Group By 4.Group By 和 Order By 5.Group By中Select指定的字段限制 6.Group By All 7.Group By与聚合函 ...

随机推荐

  1. 关于AutoCAD.NET的辅助方法

    求中点坐标: /// <summary> /// 中点 /// </summary> /// <param name="StartPoint"> ...

  2. 诡异的_DEBUG宏

    学习VLD1.0代码,发现Release版本的代码_DEBUG宏是已定义的,查找工程配置确只有NDEBUG宏的定义,不见_DEBUG的踪影. 好吧,最后发现是由于工程Code Generation选项 ...

  3. 用document.title=“xxx”动态修改title,在ios的微信下面不生效的解决办法!

    //需要jQuery var $body = $('body'); document.title = 'title'; // hack在微信等webview中无法修改document.title的情况 ...

  4. web app变革之rem(转载)

    rem这是个低调的css单位,近一两年开始崭露头角,有许多同学对rem的评价不一,有的在尝试使用,有的在使用过程中遇到坑就弃用了.但是我对rem综合评价是用来做web app它绝对是最合适的人选之一. ...

  5. Scala基础入门-4

    Scala学习——类 简单类和无参方法 class Counter { private var value = 0 // 必须初始化字段 def increment() { value += 1 } ...

  6. a 标签的四个伪类

    link        有链接属性时visited    链接地址已被访问过active     被用户激活(在鼠标点击与释放之间发生的事件)hover      其鼠标悬停 <!DOCTYPE ...

  7. WCF部署到IIS异常(详细: 不能加载类型System.ServiceModel.Activation.HttpModule )

    未能从程序集“System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”中加载类型“ ...

  8. 了解神奇的this

    this的用法 在函数中this到底取何值,是在函数真正被调用执行的时候确定的,函数定义的时候确定不了. 因为this的取值是执行上下文环境的一部分,每次调用函数,都会产生一个新的执行上下环境.举例说 ...

  9. Oracle EBS-SQL (PO-9):检查期间采购订单执行情况.sql

    --采购订单执行情况查询(七天内接收情况)select pha.segment1       采购订单,         msib.segment1      物料编码,         pla.qu ...

  10. WebView cookies清理

    今天在项目中发现一个BUG 在使用新浪微博账户登录应用时,webview会自动登录上次的微博帐号!(因为webview 记录了微博帐号和密码的cookies) 所以,需要清除SessionCookie ...