我正在用一个拉动式和可缩放的舞台来玩动感游戏,我想知道是否有一种方法可以得到stage.getAbsoluteMousePosition(),因为我们可以有一个节点的absolutePosition。
这里是显示用例的小提琴,在放大/缩小时请注意工具提示的位置。
有趣的地方在于:
circle.on('mouseover mousemove',函数(){ var mousePos = stage.getMousePosition();stage.getMousePosition mousePos.y-stage.getAbsoltePosition();tooltip.setVisible(true);tooltip.moveToTop();layer.draw();};
我很难让它起作用,我相信用getAbsoluteMousePosition就能解决它。
最好的
编辑:这个问题已经过时了。
发布于 2013-06-28 00:07:11
过时的答案
好吧,我自己修正了它,甚至认为我没有使用我想要的绝对位置。
下面是小提琴,正确的方法是这样做:
circle.on('mouseover mousemove', function () {
var mousePos = stage.getMousePosition();
tooltip.setPosition(mousePos.x/ui.scale-stage.getAbsolutePosition().x/ui.scale+stage.getOffset().x,
mousePos.y/ui.scale-stage.getAbsolutePosition().y/ui.scale+stage.getOffset().y);
tooltip.setVisible(true);
tooltip.moveToTop();
layer.draw();
});发布于 2013-06-27 04:15:50
如果我理解正确,如果您想获得指向屏幕的鼠标指针的绝对位置,那么您可以这样做:
circle.on('mouseover mousemove', function (e) {
var mousePos = stage.getMousePosition();
var absoluteX = e.screenX;
var absoluteY = e.screenY;
tooltip.setPosition(mousePos.x - absoluteX, mousePos.y - absoluteY);
tooltip.setVisible(true);
tooltip.moveToTop();
layer.draw();
});这并不能解决你的答案,因为鼠标的(x,y)坐标应该相对于画布,而不是屏幕。我不太清楚为什么tooltip.setPosition(mousePos.x, mousePos.y);不能工作,缩放一定是相对地弄乱了mousePos坐标。
无论如何,如果您只需要工具提示在正确的节点上方悬停,而不遵循鼠标位置,则此操作应该适用于您:
tooltip.setPosition(this.getX(), this.getY());如果你需要的话,你可以用一定的量来抵消,比如一半的高度(半径)。
tooltip.setPosition(this.getX(), this.getY()-this.getHeight()/2);http://jsfiddle.net/projeqht/nDpYr/
https://stackoverflow.com/questions/17330609
复制相似问题