#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. как тогда я могу получить доступ к отдельному элементу в наборе?