OSDN Git Service

Add the freeze method to the
authordhrname <dhrname@users.sourceforge.jp>
Tue, 8 Nov 2016 13:47:04 +0000 (22:47 +0900)
committerdhrname <dhrname@users.sourceforge.jp>
Tue, 8 Nov 2016 13:47:04 +0000 (22:47 +0900)
org/w3c/dom/smil.js

index f065c53..d6f03df 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