Как устроены связи.
Связи между объектами — это суть наследники класса MovieClip, создаются динамически в процессе рисования и имеют обработчики событий onPress(), onRelease(), а также обработчик контекстного меню itemHandler(_obj, menuItem), где:
- _obj — имя выбранной пользователем связи;
- menuItem — подпункт контекстного меню.
Количество звеньев в связи (в линии) ничем не ограничивается, другими словами, линия может быть как угодно сложной.
Примечание. В определениях «как угодно сложной» или «ничем не ограничивается» есть немного от лукавого. Более точное определение может звучать так: «сложность композиции зависит от мощности Вашего компьютера».
Все связи сохраняются в двух специальных массивах: arrayLines({startNameElement, endNameElement, lineObject ,,,,}) и arrayPoint({nameLine, x,y }); где,
- startNameElement — стартовый элемент;
- endNameElement — финишный элемент;
- lineObject, nameLine — имя линии;
- x, y — координаты звена линии.
Первый массив устанавливает соответствие между двумя связываемыми объектами и именем связи (линии). Второй массив содержит все множество координат точек изменений, через которые проходит линия в формате: имя линии — координаты точки.
В данной реализации нет необходимости создавать связи направленными и различать их по типам. Однако нет ограничений для того, чтобы сделать связи направленными и разными по качеству (иногда это требуется). Придать связям направленность и качество можно из контекстного меню, добавив туда дополнительные пункты и дописав к ним обработчики.