例如我需要转到点[50, 50]
,我的阶段刻度为10.4
,如何根据比例计算公式的位置?
$('#bPhoneSearch').click(function(e){
e.preventDefault();
node.nextXPoint = (stage.width() / 2 - pos.x);
node.nextYPoint = (stage.height() / 2 - pos.y);
node.status = 'moving';
});
点击我即可获得我需要到达的终点(它将位于中心)和我的frameanimation功能:
if(node.status == 'moving')
{
var dx = (stage.x() - node.nextXPoint);
var dy = (stage.y() - node.nextYPoint);
var dist = Math.sqrt(dx * dx + dy * dy);
console.log(dist);
if(dist < 5)
{
stage.x(node.nextXPoint);
stage.y(node.nextYPoint);
node.status = '';
}
else
{
var angle = Math.atan2(dy, dx);
var speedX = -Math.cos(angle) * 6;
var speedY = -Math.sin(angle) * 6;
stage.x(stage.x() + speedX);
stage.y(stage.y() + speedY);
}
}
我正在做一个移动的动画,现在它可以正常工作,但是当我缩放舞台时,它的位置出错了,所以问题是我在哪里进行比例计算。
如何获得舞台比例:stage.getScaleX()
,stage.getScaleY()
答案 0 :(得分:2)
我不确定我是否正确地提出了这个问题,因为这看起来有点过于简单了。我错过了什么吗?
scale = 10.4; // your scale
posXScaled = posX * scale; //posX would be 50 in your example positions[0]
posYScaled = posY * scale; // positions[1]
修改
我认为你需要在这里添加你的比例计算:
var dx = (stage.x() - node.nextXPoint) * scale;
var dy = (stage.y() - node.nextYPoint) * scale;
您可能还需要更新条件:
if(dist < 5 * scale)