OSDN Git Service

Modify the and the objects
authordhrname <dhrname@users.sourceforge.jp>
Wed, 9 Nov 2016 13:11:46 +0000 (22:11 +0900)
committerdhrname <dhrname@users.sourceforge.jp>
Wed, 9 Nov 2016 13:11:46 +0000 (22:11 +0900)
org/w3c/dom/smil.js
tool/Spec/spec/SvgDomSpec.js

index 1bd0077..e3d92c7 100644 (file)
@@ -1475,8 +1475,9 @@ base("$calcMode").up("$attribute").mix( {
   },\r
   \r
   /*凍結処理をするために、進捗率を最後まで進めて調整するメソッド\r
+   * 返り値は調整された進捗率\r
    * もっぱら、_setEndFrameメソッドで使われる*/\r
-  freeze: function($list) {\r
+  getAdvanceEnd: function($list) {\r
     var line = this.timeline,\r
         duration = line.simpleDuration;\r
     if (duration) {\r
@@ -1490,14 +1491,14 @@ base("$calcMode").up("$attribute").mix( {
     } else {\r
       advance = 0;\r
     }\r
-    return this.tocall(advance);\r
+    return advance;\r
   },\r
   \r
   /*_setEndFrameメソッドは、終了処理と凍結作業をする*/\r
   _setEndFrame: function($list) {\r
     /*上書きされたメソッドを呼び出してアニメーションの凍結作業をする*/\r
     if (this.fill === "freeze") {\r
-      this.setAttribute(this.freeze($list));\r
+      this.setAttribute(this.tocall( this.getAdvanceEnd($list) ));\r
       line = duration = advance = void 0;\r
     } else {\r
       this.removeAttribute();\r
@@ -1859,7 +1860,7 @@ base("$calcMode").up("$attribute").mix( {
      this.setAttribute = isPostActive ? this.__setAttribute\r
                                     : this.$animateElement.setAttribute;\r
      /*上書きされたメソッドを呼び出す*/\r
-     this.$animateElement._setFrame.call(this, currentFrame);\r
+     this.$animateElement._setFrame.call(this, $list);\r
    },\r
    \r
    _setEndFrame: function($list) {\r
@@ -1878,9 +1879,13 @@ base("$calcMode").up("$attribute").mix( {
          list[this.numberOfList].value = "translate(0)";\r
        }\r
      } else {\r
-       /*凍結処理をする*/\r
-       list[this.numberOfList].value = this.freeze($list);\r
+       /*凍結処理をする\r
+        * 自前のtocallメソッドはvalueプロパティを書きかえてしまうため、\r
+        * 上書きメソッドを呼び出す*/\r
+       list[this.numberOfList].value = this.type+ "(" \r
+                                      +this.$animateElement.tocall.call( this, this.getAdvanceEnd($list) )+ ")";\r
      }\r
+     this.setAttribute( this.joinList(this.defaultValue || "") );\r
    },\r
    \r
     /*setAddメソッドのオーバライド\r
@@ -1916,8 +1921,10 @@ base("$calcMode").up("$attribute").mix( {
   } )\r
   .up("$motionElement")\r
   .mix( function() {\r
-    /*setRFrameメソッドを再定義*/\r
+    /*$animateTransformElementオブジェクトのでは、うまくいかないため、\r
+     * setRFrameとsetEndFrameメソッドを再定義*/\r
     this._setFrame = this.$animateElement._setFrame;\r
+    this._setEndFrame = this.$animateElement._setEndFrame;\r
   })\r
   .mix( {\r
     numberOfList: -1,\r
index 493378d..4f981ac 100644 (file)
@@ -2289,6 +2289,7 @@ describe("SMIL Animation Spec", function() {
         } );\r
         /*境界条件を調べておく (limit value analysis)*/\r
         it("should be this for the value  (limit value analysis)", function() {\r
+          expect(typeof $animate.getAdvanceEnd).toBe("function");\r
           $animate.init();\r
           \r
           ele.setAttributeNS(null, "begin", "1s");\r