Raphaeljs:复制元素或设置到另一张纸上 [英] Raphaeljs: Copy element or set to another paper

查看:320
本文介绍了Raphaeljs:复制元素或设置到另一张纸上的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有可能将纸张中存在的元素或集合添加到另一个纸张,而不是从头开始创建每个元素两次?<​​/ p>

背景:

解决方案

Raphael不允许在一个单独的文档中创建一个概览地图将元素从一张纸移动到另一张纸。
所以最好在目标纸中创建一个具有相同属性的新元素。
我创建了以下示例方法。您可以在页面中添加代码,并使用cloneToPaper函数将元素或集合克隆到另一个纸张。

  function extractJSON元素){
var attr = element.attr(),
newNodeJSON = {type:element.type},
key;
for(key in attr){
newNodeJSON [key] = attr [key];
}
return newNodeJSON;
}
/ *
* @param {Object}元素:raphael元素或集合
* @param {Object}纸张:目标纸张在哪里克隆
* @ return {object}:new created set or element
* /
function cloneToPaper(element,paper){
var isSet = element.type ==='set',
elementJSONArr = [],
i,ln,newSet;

if(isSet){
ln = element.items.length;
for(i = 0; i elementJSONArr.push(extractJSON(element.items [i]));
}
}
else {
elementJSONArr.push(extractJSON(element));
}
newSet = paper.add(elementJSONArr);
return isSet? newSet:newSet [0];
}


Is there a possibility of adding an element or set that exists within a paper to another paper, without creating each element twice from scratch?

Background for this: I visualize a large node graph and want to create an "overview map" in a separate paper.

解决方案

Raphael don't allow to move element from one paper to another directly. So it is better to create a new element with same property in the target paper. I have created following sample method. you can add the code in your page and use cloneToPaper function to clone a element or a set to another paper.

function extractJSON(element) {
    var attr = element.attr(),
    newNodeJSON = {type: element.type},
    key;
    for (key in attr) {
        newNodeJSON[key] = attr[key];
    }
    return newNodeJSON;
}
/*
 * @param {Object} element: raphael element or set
 * @param {Object} paper: Target paper where to clone
 * @return {object}: newly created set or element
 */
function cloneToPaper(element, paper) {
    var isSet = element.type === 'set',
    elementJSONArr = [],
    i, ln, newSet;

    if (isSet) {
        ln = element.items.length;
        for (i = 0; i < ln; i += 1) {
            elementJSONArr.push(extractJSON(element.items[i]));
        }
    }
    else {
        elementJSONArr.push(extractJSON(element));
    }
    newSet = paper.add(elementJSONArr);
    return isSet ? newSet : newSet[0];
}

这篇关于Raphaeljs:复制元素或设置到另一张纸上的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆