Вопрос новичка Raphael.js: как создать прямоугольник и линии как ОДИН объект? - PullRequest
1 голос
/ 27 апреля 2011

В Raphael , если я хочу визуализировать следующую фигуру: enter image description here

Мне нужно сделать что-то вроде:

var paper = Raphael("notepad", 320, 200);

var rect = paper.rect(...);
var line1 = paper.path(...);
var line2 = paper.path(...);

, которые создают три элемента: rect, line1, line2.

НО, я хотел бы обработать визуализированную форму как один объект в другом js-коде, крометри.В Рафаэле, как я могу создать эту форму, которая возвращает мне только один объект не три?

1 Ответ

0 голосов
/ 27 апреля 2011

Вы хотите создать set.

Создает объект в виде массива для хранения и управления несколькими элементами одновременно. Предупреждение: он не создает никаких элементов для себя на странице.

var st = paper.set();
st.push(
    paper.circle(10, 10, 5),
    paper.circle(30, 10, 5)
);
st.attr({fill: "red"});

Ваш код будет выглядеть примерно так:

var paper = Raphael("notepad", 320, 200),
    st = paper.set();

st.push(
    paper.rect(...),
    paper.path(...),
    paper.path(...)
);

// use st elsewhere

Редактировать

Как я могу получить доступ к отдельному элементу в наборе?

Вы можете получить ссылки на объекты, прежде чем добавить их в набор:

var paper = Raphael("notepad", 320, 200),
    st = paper.set(),
    rect1 = paper.rect(...),
    path1 = paper.path(...),
    path2 = paper.path(...);

st.push(rect1, path1, path2);

Я не уверен на 100%, но, поскольку в документах говорится, что набор «похож на массив», вы также должны иметь возможность доступа к элементам набора с помощью записи индекса массива:

var i, elt;
for (i=0; i<st.length; i++)
{
    elt = st[i];
    // do stuff with elt
}
...