我正在尝试使用KineticJS来构建一个简单的策略游戏。我有一个Kinetic.Stage调整大小,以适应整个屏幕。在那个阶段,我打算一般有三个渲染层。最顶级的HUD层显示游戏统计 - 显然不可拖动。下面的一层是“动作层”,其中游戏地图将显示所有动作。在底部是一个静态背景层,显示某种背景 - 在这个例子中不感兴趣。 我打算让我的动作层可拖动以滚动地图。 问题是,它似乎没有这样工作,动作层不能被拖动。我肯定错过了什么。KineticJS中可拖动和静态图层的组合
我有一个小提琴这里再现了问题:
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);
标示为答复,指出图层合成中的图层导致此问题。 对不起,在舞台上设置了倾听:虚假的小提琴。我对jsfiddle版本控制并不熟悉,并发布了一个不同版本的链接 - 它也与我在上面的消息中复制的代码不同。 – Omnibus