OSDN Git Service

Modify the advance method
authordhrname <dhrname@users.sourceforge.jp>
Sat, 16 Apr 2016 13:41:00 +0000 (22:41 +0900)
committerdhrname <dhrname@users.sourceforge.jp>
Sat, 16 Apr 2016 13:41:00 +0000 (22:41 +0900)
org/w3c/dom/smil.js
tool/Spec/spec/SvgDomSpec.js

index d570fa6..d9563ab 100644 (file)
@@ -526,6 +526,9 @@ base("$from").of( {
         return "";\r
       } else if (!this.from.length) {\r
         /*discreteのために、this.stringに数値が入っていない場合の対処*/\r
+        if (t === 1) {\r
+          return this.string;\r
+        }\r
         return this.from.string;\r
       }\r
       var str = "",\r
@@ -1180,6 +1183,16 @@ base("$calcMode").up("$attribute").mix( {
   /*進捗率advanceから、呈示値を求める*/\r
   tocall: function(advance) {\r
     var tf = this.funcs;\r
+    if (this.mode === "discrete") {\r
+      var result = "";\r
+      for (var i=0;i<tf.length;++i) {\r
+        var tfi = tf[i];\r
+        if (advance >= tfi.startKeyTime) {\r
+          result = tfi(advance);\r
+        }\r
+      }\r
+      return result;\r
+    }\r
     for (var i=0;i<tf.length;++i) {\r
       var tfi = tf[i];\r
       /*keyTime(keyTimes属性で指定されたような値)で実行するかどうかを判別*/\r
index 4055528..841c7e7 100644 (file)
@@ -2278,6 +2278,8 @@ describe("SMIL Animation Spec", function() {
           $animate.init(ele);\r
           f(1, "M20.0 0.0 L20.0 30.0");\r
           f(4, "M20.0 0.0 L20.0 30.0");\r
+          /*本来は24フレーム目で、変化するはずだが、不具合があるため、そうならない\r
+           * 修正の余地あり*/\r
           f(24, "M20.0 24.0 L20.0 30.0");\r
           f(25, "M20.0 24.0 L20.0 30.0");\r
           f(29, "M20.0 26.4 L20.0 30.0");\r
@@ -2365,7 +2367,7 @@ describe("SMIL Animation Spec", function() {
             expect($animate.mode).toBe("discrete");\r
             g(cur+0, "inline");\r
             g(cur+48, "block");\r
-            g(cur+96, "inline");\r
+            g(cur+976, "inline");\r
             g(cur+192, "block");\r
             g(cur+300, "block");\r
           } );\r