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

#javascript #raphael

#javascript #рафаэль

Вопрос:

В raphael, если я хочу отобразить следующую форму: введите описание изображения здесь

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

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

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

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

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

Ответ №1:

Вы хотите создать 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, e<
for (i=0; i<st.length; i  )
{
    elt = st[i];
    // do stuff with elt
}
  

Комментарии:

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