私は KineticJS 4.0.5 を使用しており、現在いくつかのレイヤーのコンテンツを描画しようとしていますが、ステージに追加された最後のレイヤーのみが描画されます... ドキュメントを正しく理解していれば、これは可能であるはずです。層?
私は3つの異なるレイヤーを持っています:
- Kinectic.Rect オブジェクトのみの背景レイヤー。
- いくつかのタイプの形状を持つ要素レイヤー。
- そして、私が常にすべての上にいたい要素を持つトップレイヤー。
作成したオブジェクト内にある描画関数内にこれらのレイヤーを設定します。このオブジェクトには、背景を参照する形状属性と、要素レイヤーに追加する要素を含むコンテンツ属性もあります。描画機能の私のコードは次のとおりです。
this.draw = function() {
var stage = E.game.stage, layers = E.game.layers;
stage.clear();
// Add Background
this.shape.setSize(stage.getWidth(), stage.getHeight());
layers.background.add(this.shape);
// Iterate over contents
for(var i = 0; i < this.contents.length; i++) {
layers.elements.add(this.contents[i].shape);
}
// Draw Everything
stage.add(layers.background);
stage.add(layers.elements);
stage.add(layers.top); // This one is currently empty
stage.draw();
}
この関数を実行すると、キャンバスにlayers.topだけが描画され、追加された行をコメントするとlayers.elementsだけが描画されます。ただし、ステージには 3 つの子があり (chrome の inspect 要素で確認しました)、ドキュメントには draw 関数がすべてのレイヤーを描画すると書かれています... ここで何か間違っていますか? それとも無理ですか?それが不可能なら、なぜレイヤーとステージが必要なのですか? 1つで十分ではないでしょうか?
前もって感謝します。
編集:私は問題を解決することができました.cssを使用して白い背景色をキャンバス要素に適用していました.各レイヤーは他のレイヤーの上に新しいキャンバス要素を作成するため、一番上のレイヤーのコンテンツしか見ることができませんでした(この場合ただ白)。
ただし、以前は 1 つのレイヤーではなかった、複数のレイヤーに関連する問題がまだあります。ステージでクリア機能を使用すると、レイヤーがクリアされるはずですよね? しかし、代わりに、レイヤーはまったく同じままです。個々のレイヤーで clear を呼び出そうとしても、レイヤーは変更されません...クリア後にステージドロー機能も使用していますが、まったく変更はありません...今まで見つけた唯一の解決策は、レイヤーをステージから削除して再度追加することでした:sレイヤーの内容をリセットするより良い方法はありますか?
最初の質問で混乱させて申し訳ありません。