KineticJS を使用して単純な戦略ゲームを構築しようとしています。画面全体に収まるようにサイズ変更された Kinetic.Stage が 1 つあります。その段階では、一般的に 3 つのレンダリング レイヤーを使用する予定です。ゲームの統計を表示する HUD レイヤーの一番上 - 明らかにドラッグできません。1 つ下のレイヤーは「アクション レイヤー」で、ゲーム マップとすべてのアクションが表示されます。一番下には静的な背景レイヤーがあり、ある種の背景を表示していますが、この例では興味深いものではありません。マップをスクロールするために、アクション レイヤーをドラッグ可能にするつもりです。問題は、この方法では機能しないようで、アクション レイヤーをドラッグできないことです。私は何かが欠けているに違いない。
ここでフィドルで問題を再現しました:
http://jsfiddle.net/shadowfire/2v9xS/22/
また、アクションレイヤーのルートに形状を追加すると、レイヤーをドラッグできることがわかりましたが、その形状をドラッグした場合にのみ、これは優れた解決策ではないようです。
対応するコード:
var stage = new Kinetic.Stage({
container: 'myCanvas',
width: 400,
height: 400,
draggable: false,
listening: true
});
var backgroundLayer = new Kinetic.Layer({draggable: false});
var actionLayer = new Kinetic.Layer({draggable: true, listening: true});
var mapLayer = new Kinetic.Layer({draggable: true});
var foregroundLayer = new Kinetic.Layer({draggable: true, clearBeforeDraw: false});
var hudLayer = new Kinetic.Layer({draggable: false});
backgroundLayer.add(new Kinetic.Rect(
{
x:0,
y:0,
width: 400,
height: 400,
fill: 'grey'
}
));
mapLayer.add(new Kinetic.Rect(
{
x:100,
y:100,
width: 200,
height: 200,
fill: 'orange',
stroke: 'black',
draggable: true
}
));
foregroundLayer.add(new Kinetic.Circle(
{
x:200,
y:200,
radius: 30,
fill: 'yellow',
stroke: 'black',
draggable: true
}
));
actionLayer.add(mapLayer);
actionLayer.add(foregroundLayer);
actionLayer.add(new Kinetic.Text({text:"ActionLayer - draggable works only here", fill:'green', x:100, y:100}));
hudLayer.add(new Kinetic.Text(
{
fontSize: 30,
text: 'STATUS',
fill: 'green'
}
));
stage.add(backgroundLayer);
stage.add(actionLayer);
stage.add(hudLayer);