2013-07-09 2 views
1

Я только начинаю изучать элемент холста, однако считаю, что он дважды буферизирован. Просматривая код для kineticjs Кажется, что Kinetic.Stage создает два холста (не в DOM) - Kinetic.SceneCanvas и Kinetic.hitCanvas. Когда вы добавляете слой на сцену, кажется, он создает еще два холста, другой холст сцены и хита, один из которых отображается в DOM. Почему для этого требуется много перекрывающихся холстов? Или я неправильно понял код и/или пропустил точку?KineticJS- Почему он использует так много скрытых элементов холста?

Благодаря

+1

См http://stackoverflow.com/questions/17428175/why-is -kinetic-shapes-drawfunc-method-called-two – projeqht

+0

Спасибо projeqht, все еще кажется слишком много, если у меня есть один слой, но 4 холста .... – sferret

+0

Привет @sferret считаю, что мой ответ принят, если он ответил на ваш вопрос. Благодаря! – projeqht

ответ

4

Возьмите прямо из KineticJS GitHub Readme:

Кинетические этапы состоят из определенных пользователем слоев. Каждый слой имеет два холста рендеринга, рендеринга сцены и рендеринга графа хитов. Средство рендеринга сцены - это то, что вы можете видеть, а рендеринг рендеринга графа - это специальный скрытый холст, который используется для обнаружения событий высокой производительности. Каждый слой может содержать фигуры, группы фигур или группы других групп. Сцена, слои, группы и фигуры являются виртуальными узлами, аналогичными узлам DOM на странице HTML.

Кроме того, в разделе функций, KineticJS функции: обнаружение событий

Высокая производительность с помощью карты цветов хэширования

+0

Спасибо - однако мне кажется, вам нужно очень внимательно относиться к добавлению слоев, потому что, безусловно, производительность скоро будет бедной? И каковы 2 стадии создания? – sferret

+0

Возможно, если вы используете слишком много слоев, количество созданных canvas (я не уверен) перевешивает бонусы за производительность, используя 2 холста на каждый слой. Но зачем вам нужно использовать столько слоев? Вы также можете группировать объекты внутри слоев и выполнять операции над группами вместо слоев! – projeqht

+0

Я не уверен, что вы подразумеваете под сценой, создающей 2 полотна. В моем приложении KineticJS я использую только 1 слой, и я вижу только 2 полотна, присутствующих в DOM. Вложенные элементы для меня выглядят так: div # container> div.kineticjs-content> div # chart_growth_reference, canvas, canvas – projeqht

Смежные вопросы