【问题标题】:Rotating object with Matrix.rotate in snap.svg morphs the object在 snap.svg 中使用 Matrix.rotate 旋转对象使对象变形
【发布时间】:2015-11-11 05:23:03
【问题描述】:

我正在尝试使用 snap.svg 库来旋转和移动我的对象,但我得到了对象变形的这种奇怪行为。

http://codepen.io/anon/pen/vOwRga

var s = Snap.select("#svg");
var rect1 = s.select("#rect1");
var rect2 = s.select("#rect2");
var rotateMatrix = new Snap.Matrix();
rotateMatrix.rotate(180,302,495);

this.spin = function() {
 rect1.animate({transform:'r180,302,160'},5000,function(){
  rect1.animate({transform:'r0,302,160'},5000);
 });

 rect2.animate({transform: rotateMatrix},5000,function(){
  rect2.animate({transform: rotateMatrix.invert},5000);
 });
}

所以我在这里旋转了两个不同的矩形。第一个工作正常,第二个是我尝试使用矩阵的地方。 我究竟做错了什么?为什么会这样?人生的意义是什么?

【问题讨论】:

  • 您无法真正为这样的矩阵设置动画。第一个版本/矩形动画有什么问题?生命的意义是 42 岁。
  • 第一个没有问题。我只是想知道我实际上在用矩阵做什么。

标签: javascript svg rotation snap.svg


【解决方案1】:

在第一个中,您正在为旋转设置动画。 Snap 知道它是一个旋转,因为您使用 Snap 的特殊 'r' 初始化程序定义它的方式。

在第二个中,您只是传递了一个矩阵,该矩阵描述了从一个方向到另一个方向的变换。 Snap 和浏览器不知道它代表旋转。所以它所做的只是对矩阵中的值进行插值。

【讨论】:

  • 感谢您的回答,对您有帮助。
  • 这也解释了我的旋转问题。但即使我使用特殊的“r”初始化程序,Snap 也将变换设置为矩阵,它看起来不像旋转。任何建议如何强制 Snap 将其设置为旋转?
  • @daign 你应该提出一个新问题。
  • @PaulLeBeau 我已经通过使用旧版本的 Snap 让它像在 codepen 中一样工作。当前版本似乎存在错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多