[Sie-announce] SIEコード [2133] SMILAnimationについて、Motion関連の修正をした。

Back to archive index

svnno****@sourc***** svnno****@sourc*****
2010年 11月 7日 (日) 21:30:32 JST


Revision: 2133
          http://sourceforge.jp/projects/sie/svn/view?view=rev&revision=2133
Author:   dhrname
Date:     2010-11-07 21:30:31 +0900 (Sun, 07 Nov 2010)

Log Message:
-----------
SMILAnimationについて、Motion関連の修正をした。

Modified Paths:
--------------
    branches/06x/063/org/w3c/dom/svg.js

Modified: branches/06x/063/org/w3c/dom/svg.js
===================================================================
--- branches/06x/063/org/w3c/dom/svg.js	2010-11-06 14:36:10 UTC (rev 2132)
+++ branches/06x/063/org/w3c/dom/svg.js	2010-11-07 12:30:31 UTC (rev 2133)
@@ -4539,7 +4539,7 @@
         tar._values = [null, tar._to];
       } else if (tar._by) {
         tar._values = ["0", tar._by];
-      } else {
+      } else if (!tar.hasChildNodes() && !tar.hasAttributeNS(null, "path")) { //SVGAnimateMotionElementに留意
         /*アニメーションの効果が出ないように調整する
          *SMILアニメーションの仕様を参照
          *
@@ -4843,17 +4843,22 @@
     tar._frame = function() {
       var _tar = tar, tpn = _tar._path;
       if (!!tpn) {
-        var st = (tpn.getTotalLength() / _tar.getSimpleDuration()) * _tar.getCurrentTime() / 125 * 0.8;
+        var tgsd = _tar.getSimpleDuration();
+        if (tgsd === 0) {
+          tgsd = null;
+          return;
+        }
+        var st = (tpn.getTotalLength() / tgsd) * _tar.getCurrentTime() / 125 * 0.8;
         var p = tpn.getPointAtLength(st), trans = _tar.targetElement.transform;
         p = p.matrixTransform(_tar.targetElement.getScreenCTM())
-        trans.animVal.getItem(trans.numberOfItmes-1).setTranslate(p.x, p.y);
+        trans.animVal.getItem(trans.animVal.numberOfItems-1).setTranslate(p.x, p.y);
         var base = trans.baseVal;
         trans.baseVal = trans.animVal;
         var evtt = _tar.ownerDocument.createEvent("MutationEvents");
         evtt.initMutationEvent("DOMNodeInsertedIntoDocument", false, false, null, null, null, null, null);
         _tar.targetElement.dispatchEvent(evtt);
         trans.baseVal = base;
-        evtt = base = trans = null;
+        evtt = base = trans = st = tgsd = p = null;
       }
     }
     evt = trans = null;
@@ -4897,7 +4902,12 @@
     }
     tar._frame = function() {
       var _tar = tar, to = new SVGColor(), from = new SVGColor();
-      var n = _tar._values.length - 1, t = _tar.getCurrentTime(), d = _tar.getSimpleDuration(), i = Math.floor((t*n) / d);
+      var d = _tar.getSimpleDuration();
+      if (d === 0) {
+        d = null;
+        return;
+      }
+      var n = _tar._values.length - 1, t = _tar.getCurrentTime(), i = Math.floor((t*n) / d);
       to.setRGBColor(_tar._values[i+1]);
       from.setRGBColor(_tar._values[i]);
       if (!!!_tar._keyTimes) {




Sie-announce メーリングリストの案内
Back to archive index