3

kineticJS でプログラミングしようとしていますが、Z-Index の管理で問題が発生しました。

必要な範囲の z-index を設定することはできないようですが、すべてのオブジェクトは独自の z-index を取得し、それらを他のオブジェクトと再変更することができます。したがって、2 つのオブジェクトを取得した場合、それらの z-index は 0 と 1 になります。100 などに設定することはできません。あれは正しいですか?

私の問題は、等尺性の概要で小さなゲームをプログラムしようとしていることです。また、プレイヤーは、歩いている壁よりも低い z-index を持つ必要がありますが、壁の前にいるときは高い z-index を持つ必要があります。しかし、同じ y 座標のすべての壁に同じ z インデックスを持たせることはできません。それらはすべて、自由な独自の z インデックスを取得するため、すべてが非常にランダムになります。

たとえば、y 座標が 5 の壁の z-index は 5 ですが、壁の前にいるプレイヤーの z-index は 6 です。はランダムなインデックスを取得するため、そのようなゲームを作成することはまったく不可能です。

オブジェクトの z-index を管理する他の方法はありますか? 私が見る唯一の解決策は、マップのすべてのタイルに対して一意の z インデックスを持つ 2 つの非表示オブジェクトを含む非表示レイヤーを作成し、それらを壁やプレーヤー、またはその他のオブジェクトで動的に変更するスクリプトをプログラムすることです。しかし、オブジェクトが正しい順序で表示されることを確認するためのより良い方法が必要でしょうか?

4

1 に答える 1

1

私はちょうど同じ問題にぶつかりました。Z-index はシーケンシャルにしか機能しないように見えますか? そこで、要素のリストを並べ替え、配列インデックスに基づいて Z インデックスを割り当てました。

var sortedElements = _elements.slice();
sortedElements.sort(function(a, b) {
    var diff = a.getY() - b.getY();
    if ( diff !== 0 ) { return diff; }
    return a.getX() - b.getX();
} );
for ( var loop = 0, length = sortedElements.length; loop < length; loop++ ) {
    sortedElements[loop].setZIndex(loop);
}
于 2013-03-07T06:37:51.993 に答える