OSDN Git Service

Support to a beginElement method
authordhrname <dhrname@users.sourceforge.jp>
Sun, 1 Nov 2015 13:43:00 +0000 (22:43 +0900)
committerdhrname <dhrname@users.sourceforge.jp>
Sun, 1 Nov 2015 13:43:00 +0000 (22:43 +0900)
org/w3c/dom/smil.js
tool/Spec/spec/SvgDomSpec.js

index 77e34ca..445a6ab 100644 (file)
@@ -848,6 +848,22 @@ base("$calcMode").up("$attribute").mix( {
                   } )\r
                 } ).parse();\r
     frame.$activate.end.$begin = frame;\r
+    /*beginElementメソッドを追加*/\r
+    ele.beginElement = (frame.string !== "indefinite") ? function(){}\r
+                        : function() {\r
+                            frame.listener( {\r
+                              /*アニメーションの開始をこのメソッドが呼ばれた時点とする*/\r
+                              timeStamp: Date.now()\r
+                            } );\r
+                          };\r
+    /*endElementメソッドを追加*/\r
+    ele.endElement = (frame.$activate.end.string !== "indefinite") ? function(){}\r
+                        : function() {\r
+                            frame.$activate.end.listener( {\r
+                              /*アニメーションの開始をこのメソッドが呼ばれた時点とする*/\r
+                              timeStamp: Date.now()\r
+                            } );\r
+                          };\r
     if (frame.isResolved) {\r
       /*開始時間が初期化されてしまうのを防ぐ*/\r
       var cacheBegin = frame.begin;\r
@@ -857,14 +873,6 @@ base("$calcMode").up("$attribute").mix( {
       } );\r
       frame.begin = cacheBegin;\r
     }\r
-    /*beginElementメソッドを追加*/\r
-    ele.beginElement = (frame.string !== "indifinite") ? function(){}\r
-                        : function() {\r
-                            frame.listener( {\r
-                              /*アニメーションの開始をこのメソッドが呼ばれた時点とする*/\r
-                              timeStamp: Date.now()\r
-                            } );\r
-                          };\r
     /*setFrameメソッドを使ったときの、再帰スタックの使いすぎを防ぐため*/\r
     frame.timelines = [];\r
     begin = ele = id = void 0;\r
@@ -1367,8 +1375,8 @@ function getDocument()
        * ただし、SMIL アニメーションの仕様では、\r
        * animate要素の開始時刻まで、時を進める操作をするだけ*/\r
        svgDoc.defaultView.addEventListener("hashchange", function() {\r
-           svgDoc.defaultView.location.hash;\r
-         })\r
+           svgDoc.getElementById(svgDoc.defaultView.location.hash.slice(1)).beginElement();\r
+         });\r
     }\r
   }\r
   /*idはアニメの中止ハンドル*/\r
index 62f6fef..af728cc 100644 (file)
@@ -4481,6 +4481,7 @@ describe("SMIL Animation Spec", function() {
           frame.setFrame(0);\r
           ele.setAttributeNS(null, "begin", "indefinite");\r
           ele.setAttributeNS(null, "dur", "1s");\r
+          ele.setAttributeNS(null, "dur", "1s");\r
           ele.setAttributeNS(null, "attributeName", "fill");\r
           ele.setAttributeNS(null, "fill", "freeze");\r
           ele.setAttributeNS(null, "from", "rgb(0,0,0)");\r
@@ -4494,6 +4495,7 @@ describe("SMIL Animation Spec", function() {
               begin = frame.$begin.$1;\r
           expect(begin.string).toBe("indefinite");\r
           expect(begin.begin).toBe(cur);\r
+          expect(ele.endElement()).toBeUndefined();\r
         } );\r
       });\r
     } );\r