gpt4 book ai didi

javascript - EaselJS - 缩放图像上的平移中断

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:46:52 25 4
gpt4 key购买 nike

我在这个例子中遇到了平移问题 - 它工作正常,除非你移动缩放图像然后再次缩放(偏移设置为默认值并且 View 跳转到初始位置 - http://jsfiddle.net/p2Qzg/)。关于如何解决这个问题的任何想法?三天来我一直在努力解决这个问题,但没有任何好的结果。

    var canvas= document.getElementById("myCanvas");
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
var stage = new createjs.Stage("myCanvas");

function addCircle(r,x,y){
var g=new createjs.Graphics().beginFill("#ff0000").drawCircle(0,0,r);
var s=new createjs.Shape(g)
s.x=x;
s.y=y;
stage.addChild(s);
stage.update();
}

addCircle(10,200,100);
addCircle(5,canvas.width/2,canvas.height/2);
addCircle(3,400,400);

canvas.addEventListener("mousewheel", MouseWheelHandler, false);
canvas.addEventListener("DOMMouseScroll", MouseWheelHandler, false);

var zoom;

function MouseWheelHandler(e) {
if(Math.max(-1, Math.min(1, (e.wheelDelta || -e.detail)))>0)
zoom=1.1;
else
zoom=1/1.1;
stage.regX += stage.mouseX - stage.regX;
stage.regY += stage.mouseY - stage.regY;
stage.x=stage.mouseX;
stage.y=stage.mouseY;
stage.scaleX=stage.scaleY*=zoom;

stage.update();

}


stage.addEventListener("stagemousedown", function(e) {
var offset={x:stage.x-e.stageX,y:stage.y-e.stageY};
stage.addEventListener("stagemousemove",function(ev) {
stage.x = ev.stageX+offset.x;
stage.y = ev.stageY+offset.y;
stage.update();
});
stage.addEventListener("stagemouseup", function(){
stage.removeAllEventListeners("stagemousemove");
});
});

最佳答案

有点旧但是因为它仍然需要一个答案:

虽然 json fiddle 很棒。我在工作中使用它并修复了错误。

只需替换:

  stage.regX += stage.mouseX - stage.regX;
stage.regY += stage.mouseY - stage.regY;

使用这些代码行:

var local = stage.globalToLocal(stage.mouseX, stage.mouseY);
stage.regX=local.x;
stage.regY=local.y;

像魅力一样工作。我 fork 了你的 jsfiddle 并相应地改变了它。 http://jsfiddle.net/kz0dL78k/

关于javascript - EaselJS - 缩放图像上的平移中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25227975/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com