]> source.dussan.org Git - svg.js.git/commitdiff
make TransformBag clone the object before altering
authorUlrich-Matthias Schäfer <ulima.ums@googlemail.com>
Wed, 4 Jul 2018 16:27:00 +0000 (18:27 +0200)
committerUlrich-Matthias Schäfer <ulima.ums@googlemail.com>
Wed, 4 Jul 2018 16:27:00 +0000 (18:27 +0200)
dirty.html
src/controller.js
src/morph.js

index 896449b17b3b327d3e4a65b7151ff3ebda586f0b..df7c871a8da262d50b754242b809da879385bb9e 100644 (file)
@@ -275,12 +275,15 @@ let obj = { rotate: 180, origin: 'center', translate: [300, 0] }
 let obj2 = { rotate: 360, origin: 'center' }
 
 a.clone() // startPosition
-a.clone().transform(obj, true).transform(obj2, true) // endPosition
+//a.clone().transform(obj, true).transform(obj2, true) // endPosition
 
 // that works
 a.animate(new SVG.Spring(50, 30)).transform(obj)  // animation
 // that breaks (why??)
-// a.clone().animate(new SVG.Spring(50, 30)).transform(obj)  // animation
+
+var b = a.clone().animate(new SVG.Spring(500, 30))
+//debugger
+b.transform(obj)  // animation
 //a.animate(300).transform(obj, true).transform(obj2, true) // animation
 
 
index c2a935596ce1e670f721f6c4f3c8bfce0ed15475..46c1771a2cde424e359b210472a137547d0fbcf6 100644 (file)
@@ -124,6 +124,9 @@ SVG.Spring = SVG.invent ({
       c.done = dt == Infinity
       if(dt == Infinity) return target
       if(dt == 0) return current
+
+      if (dt > 100) dt = 16
+
       dt /= 1000
 
       // Get the previous velocity
index ff902aeb2847d798b9fcb176935d780094ab6eaf..18ed6b5b8394111e010e920d2e100b49a4e4e871 100644 (file)
@@ -158,15 +158,22 @@ SVG.Morphable.TransformBag = SVG.invent({
       }
     }
 
-    SVG.Matrix.call(this, obj)
+    var data = {...(obj || {})}
 
-    if (obj && obj.origin) {
-      obj.originX = obj.origin[0]
-      obj.originY = obj.origin[1]
+    if (typeof data.origin == 'string') {
+      delete data.origin
     }
 
-    this.originX = obj && obj.originX || 0
-    this.originY = obj && obj.originY || 0
+    SVG.Matrix.call(this, data)
+
+
+    if (data.origin) {
+      data.originX = data.origin[0]
+      data.originY = data.origin[1]
+    }
+
+    this.originX = data.originX || 0
+    this.originY = data.originY || 0
   },
 
   extend: {