OSDN Git Service

Modify the _setEndFrame method of the
[sie/sie.git] / org / w3c / dom / smil.js
index f065c53..1bd0077 100644 (file)
@@ -1474,25 +1474,30 @@ base("$calcMode").up("$attribute").mix( {
     line = duration = advance = void 0;\r
   },\r
   \r
+  /*凍結処理をするために、進捗率を最後まで進めて調整するメソッド\r
+   * もっぱら、_setEndFrameメソッドで使われる*/\r
+  freeze: function($list) {\r
+    var line = this.timeline,\r
+        duration = line.simpleDuration;\r
+    if (duration) {\r
+      var time = (line.activeTime > $list.beginEnd) ? $list.beginEnd\r
+                  : line.activeTime;\r
+      var advance = ( time % duration ) / duration;\r
+      /*例外が発生するため、進捗率が1を超えないように処理*/\r
+      advance = (advance > 1) ? 1 : advance;\r
+       /*活動継続時間と単純継続時間が一致すると、余りは0となるため以下の処理*/\r
+      advance = advance || 1;\r
+    } else {\r
+      advance = 0;\r
+    }\r
+    return this.tocall(advance);\r
+  },\r
+  \r
   /*_setEndFrameメソッドは、終了処理と凍結作業をする*/\r
   _setEndFrame: function($list) {\r
-    var frame = $list.currentFrame;\r
     /*上書きされたメソッドを呼び出してアニメーションの凍結作業をする*/\r
     if (this.fill === "freeze") {\r
-      var line = this.timeline,\r
-          duration = line.simpleDuration;\r
-      if (duration) {\r
-        var time = (line.activeTime > $list.beginEnd) ? $list.beginEnd\r
-                    : line.activeTime;\r
-        var advance = ( time % duration ) / duration;\r
-        /*例外が発生するため、進捗率が1を超えないように処理*/\r
-        advance = (advance > 1) ? 1 : advance;\r
-         /*活動継続時間と単純継続時間が一致すると、余りは0となるため以下の処理*/\r
-        advance = advance || 1;\r
-      } else {\r
-        advance = 0;\r
-      }\r
-      this.setAttribute(this.tocall(advance));\r
+      this.setAttribute(this.freeze($list));\r
       line = duration = advance = void 0;\r
     } else {\r
       this.removeAttribute();\r
@@ -1874,6 +1879,7 @@ base("$calcMode").up("$attribute").mix( {
        }\r
      } else {\r
        /*凍結処理をする*/\r
+       list[this.numberOfList].value = this.freeze($list);\r
      }\r
    },\r
    \r