我希望我的移相器世界在我的鼠标指针所在的点(或 2 个手指/捏之间)缩放。默认情况下,移相器围绕左上角缩放/缩放。
这是一个示例(但不适用于移相器),它显示了我想要实现的目标:https ://cloudup.com/blog/how-we-made-zoom-on-mobile-using-css3-and-js
我希望我的移相器世界在我的鼠标指针所在的点(或 2 个手指/捏之间)缩放。默认情况下,移相器围绕左上角缩放/缩放。
这是一个示例(但不适用于移相器),它显示了我想要实现的目标:https ://cloudup.com/blog/how-we-made-zoom-on-mobile-using-css3-and-js
根据单击的点缩放一组项目。
捕获组 (x,y) 的起始位置和鼠标单击点:
startPosX = this.position.x;
startPosY = this.position.y;
clickX = pointer.x;
clickY = pointer.y;
执行组的规模:
var tweenScale = game.add.tween(this.scale).to( { x: 2, y: 2 }, 10,
Phaser.Easing.Linear.None, true, 0, 0, false);
缩放完成后,补间回到鼠标点击位置:
tweenScale.onComplete.add(function() {
var u = ((1-this.scale.x) * clickX) + startPosX;
var v = ((1-this.scale.y) * clickY) + startPosY;
game.add.tween(this.position)
.to({ x: this.position.x + u, y: this.position.y + v}, 10,
Phaser.Easing.Linear.None, true, 0, 0, false );
}, this);
我添加startPosX
了 get u
(和v
分别)来说明该组的原始起点的位置,否则它将偏离该数量。我确信有不同的方法来处理补间链接,但计算u
和v
是重要的。
使用此答案得出基本计算:https ://stackoverflow.com/a/39344716/1956540
请参阅这些工作实现的示例: