Понимание очистки слоя 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();
        }

    });

: -)