考虑到比例,如何计算位置x,y

时间:2014-03-13 08:24:21

标签: javascript html html5-canvas kineticjs

例如我需要转到点[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()

1 个答案:

答案 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)