Понимание очистки слоя Canvas & KineticJS
Я задавался вопросом, может ли кто-нибудь пролить некоторый свет на то, как управляются слои в Canvas и KineticJS. Я боюсь понять, почему, когда я очищаю(); слой, затем используйте draw(); снова на этом слое, он возвращается с фигурами и т.д., которые я первоначально добавляю к этому слою.
например:
http://jsfiddle.net/vPGbz/1/
Я предположил, что очистка слоя полностью удаляет его, и для того, чтобы перерисовать его, мне пришлось бы создавать новые фигуры и создавать новый слой.
Если бы кто-нибудь мог это объяснить, я был бы очень благодарен.
Приветствия, Кай
Ответы
Ответ 1
Нужно быть честным, что эта документация не считается uber-verbose, но как вы можете видеть здесь: http://jsfiddle.net/vPGbz/2/ clear
удалит только выведенное представление слоя из объекта Stage. То, что вы ищете, это метод remove
, который используется для удаления определенных элементов из слоя.
Как
circleLayer.remove(circle);
Ответ 2
На данный момент вы можете сделать layer.children = [];
, но я не знаю, будет ли это иметь какие-либо побочные эффекты, которых это не должно быть!
Изменить: не делайте этого. Вместо этого сделайте следующее: layer.removeChildren()
найдено http://kineticjs.com/api-docs.php под Container
.
Ответ 3
Я использую Kinetics 4.3.1.
Я делаю два слоя, поэтому я могу добавить и удалить один из них с помощью флажка,
вы можете проверить эту ссылку: http://jsfiddle.net/lauraliparulo/uw25p/
Что-то вроде этого:
checkBoxItem.addEventListener('click', function() {
if (this.checked) {
load();
stage.add(layer2);
}
else if (!this.checked) {
layer2.clear();
}
});
: -)