OSDN Git Service

Modify the push method to support SVG API as the beginElement method
authordhrname <dhrname@users.sourceforge.jp>
Mon, 31 Oct 2016 13:53:56 +0000 (22:53 +0900)
committerdhrname <dhrname@users.sourceforge.jp>
Mon, 31 Oct 2016 13:53:56 +0000 (22:53 +0900)
org/w3c/dom/smil.js

index 276a309..48a0d23 100644 (file)
@@ -413,8 +413,6 @@ base("$frame").mix ( {
               objList.value = this.begin = eventOffset + base("$frame").currentFrame;\r
               endList.value = this.begin + this.activeTime;\r
               this.isResolved = true;\r
-              console.log(base("$frame").currentFrame, this.$list);\r
-\r
             };\r
         this.eventOffset = eventOffset;\r
         if (this.repeat > 0) {\r
@@ -1115,16 +1113,36 @@ base("$calcMode").up("$attribute").mix( {
     $frame.addLine(frame.$list.init());\r
     /*beginElementメソッドを追加*/\r
     function eleMethod (obj, eventName) {\r
-      return (obj.string !== "indefinite") ? function(){}\r
+      /*objListのvalueプロパティはあとで書き換えられる(イベントの場合のみ)*/\r
+\r
+      return \r
+    };\r
+    \r
+    /*beginElementメソッドを追加*/\r
+    var objList = frame.$list.addList(Number.MAX_VALUE),\r
+        /*endListのvalueプロパティには、活動継続フレーム数と開始フレーム数を足したものが入る*/\r
+        endList = frame.$list.addEndList(Number.MAX_VALUE);\r
+    ele.beginElement = (frame.string !== "indefinite") ? function(){}\r
                         : function() {\r
+                            objList.value = frame.begin = base("$frame").currentFrame;\r
+                            endList.value = frame.begin + frame.activeTime;\r
+                            frame.isResolved = true;\r
                             var evt = this.ownerDocument.createEvent("MouseEvents");\r
-                            evt.initMouseEvent(eventName + "Event" ,true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, this);\r
+                            evt.initMouseEvent("beginEvent" ,true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, this);\r
                             this.dispatchEvent(evt);\r
                           };\r
-    };\r
-    ele.beginElement = eleMethod(frame, "begin");\r
     /*endElementメソッドを追加*/\r
-    ele.endElement = eleMethod(frame.$activate.end || {}, "end");\r
+    var endFrame = frame.$activate.end || {};\r
+    ele.endElement = (endFrame.string !== "indefinite") ? function(){}\r
+                        : function() {\r
+                            if (frame.isResolved) {\r
+                              endList.value = frame.begin + frame.activeTime;\r
+                              endFrame.isResolved = true;\r
+                              var evt = this.ownerDocument.createEvent("MouseEvents");\r
+                              evt.initMouseEvent("endEvent" ,true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, this);\r
+                              this.dispatchEvent(evt);\r
+                            }\r
+                          };\r
     /*setFrameメソッドを使ったときの、再帰スタックの使いすぎを防ぐため*/\r
     frame.timelines = [];\r
     begin = ele = void 0;\r