OSDN Git Service

Add the setSmilEvent method to the object
authordhrname <dhrname@users.sourceforge.jp>
Wed, 2 Nov 2016 14:03:47 +0000 (23:03 +0900)
committerdhrname <dhrname@users.sourceforge.jp>
Wed, 2 Nov 2016 14:03:47 +0000 (23:03 +0900)
org/w3c/dom/smil.js

index bc41ade..be124a7 100644 (file)
@@ -1033,6 +1033,31 @@ base("$calcMode").up("$attribute").mix( {
     }\r
     return s;\r
   },\r
+  \r
+  /*repeatイベントの発火時刻リスト\r
+   * setSmilEventメソッドを見よ*/\r
+  _repeatList: [],\r
+  \r
+  /*SMILイベント関連を発火させるためのメソッド\r
+   * もっぱら、push メソッドで使われる*/\r
+   setSmilEvent: function($list) {\r
+    var detail = 0;\r
+    $list.addEvent("begin", function($list) {\r
+        var target = this._ele;\r
+        /*IE11のために、MouseEventsでSMILEventsの代用をする*/\r
+        var evt = target.ownerDocument.createEvent("MouseEvents");\r
+        evt.initMouseEvent("beginEvent" ,true, true, window, detail, 0, 0, 0, 0, false, false, false, false, 0, target);\r
+        target.dispatchEvent(evt);\r
+        /*repeatイベントのために、_repeatListプロパティを初期化する*/\r
+        var list = this._repeatList = [];\r
+      }.bind(this) );\r
+    $list.addEvent("end", function() {\r
+        var target = this._ele;\r
+        var evt = target.ownerDocument.createEvent("MouseEvents");\r
+        evt.initMouseEvent("endEvent" ,true, true, window, detail, 0, 0, 0, 0, false, false, false, false, 0, target);\r
+        target.dispatchEvent(evt);\r
+      }.bind(this) );\r
+   },\r
 \r
   /*引数で指定した要素 ele の属性を解析して、フレームに追加する*/\r
   push: function(/*Element Node*/ ele) {\r
@@ -1139,6 +1164,7 @@ base("$calcMode").up("$attribute").mix( {
                           };\r
     /*setFrameメソッドを使ったときの、再帰スタックの使いすぎを防ぐため*/\r
     frame.timelines = [];\r
+    this.setSmilEvent(frame.$list);\r
     begin = ele = void 0;\r
     return frame;\r
   },\r
@@ -2024,7 +2050,7 @@ base("$frame").up("$svgEvent").mix( {
         floor = Math.floor;\r
     while(obj) {\r
       var frame = obj.frame,\r
-          target = obj.target\r
+          target = obj.target,\r
           detail = 0;\r
       if (frame <= num) {\r
         /*IE11ではSVGEventsやDOMEventsを使うと問題が起きるため、MouseEventsで代用する*/\r