グループからノードを削除してもよろしいですか? 関数を使用して非表示にする方がよい場合があり.hide()
ます。
例については、 jsfiddleを参照してください。
いずれにせよ、 を使用しない限り、形状はデータ、外観、および変換を保持します.destroy()
。削除されたノードまたは非表示のノードにアクセスする方法を見つけ出す必要があります。
hideを使用することにした場合:
var yodaImg = new Kinetic.Image({
x: 0,
y: 0,
image: images.yoda,
width: 93,
height: 104,
name: 'image',
id: 'yoda'
});
document.getElementById('a').addEventListener('click', function() {
var yoda = layer.get('#yoda')[0];
(yoda.isVisible()) ? yoda.hide() : yoda.show();
layer.draw();
});
IDまたは名前を使用して問題のノードを再選択し、 を使用.show()
してイメージを元の場所に正確に再表示できます。
削除することにした場合:
ステージ初期:
var secretLayer = new Kinetic.Layer();
stage.add(secretLayer);
secretLayer.hide();
画像を新しい非表示の secretLayer に削除 (または移動) します。
document.getElementById('a2').addEventListener('click', function() {
var yoda = layer.get('#yoda')[0];
var yoda2 = secretLayer.get('#yoda')[0];
if (typeof yoda != 'undefined') yoda.moveTo(secretLayer);
if (typeof yoda2 != 'undefined') yoda2.moveTo(yodaGroup);
layer.draw();
});
secretLayer
特定のレイヤーからオブジェクトを削除するための媒体として機能しますが、それでも.get()
Kinetic.Container#getを使用する便利な機能を提供します
オブジェクトを削除/移動して非表示にするためだけに別のレイヤーを使用したくない場合は、独自のデータ構造を使用して削除されたノードにアクセスする必要があります。それらを削除して配列に追加し、後で呼び出したいときにアクセスするようなものです。
どちらの方法でも、ノードは変換されるまで保持されますdestroy()
。