例如我需要移动到点:[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';
});
单击时我得到了我需要到达的终点(它将位于中心)并且在我的帧动画函数中:
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()
最佳答案
我不确定我是否答对了问题,因为这看起来有点太简单了。我错过了什么吗?
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)
关于javascript - 考虑到比例如何计算位置 x, y,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22372862/