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

标签 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';
    });

单击时我得到了我需要到达的终点(它将位于中心)并且在我的帧动画函数中:

                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/

相关文章:

javascript - 在 HTML5 canvas 中通过鼠标移动绘制半透明线条

html - 如何去除 HTML5 Canvas 上 fill 和 fill 之间的空格?

javascript - 为什么在 python 中使用异常比在 javascript 中更容易接受

javascript - 点击角色为='button'的div元素无效

jquery - 使用 @font-face 动态添加 CSS

html - 使用 float 后删除两个 div 之间的间隙

javascript - 如何将innerHTML添加到现有属性

javascript - Jquery画廊/灯箱onClick总是返回 "-1"

javascript - 我想在弹出框中启用javascript

html - 如何使绝对父级中的 div 粘在底部?