OSDN Git Service

Lighten the setFrame method
authordhrname <dhrname@users.sourceforge.jp>
Sun, 25 Oct 2015 14:03:06 +0000 (23:03 +0900)
committerdhrname <dhrname@users.sourceforge.jp>
Sun, 25 Oct 2015 14:03:06 +0000 (23:03 +0900)
org/w3c/dom/smil.js

index cfdfb55..7fe4990 100644 (file)
@@ -1293,16 +1293,15 @@ base("$frame").up("$svgEvent").mix( {
           detail = 0;\r
       if (frame <= num) {\r
         /*IE11ではSVGEventsやDOMEventsを使うと問題が起きるため、MouseEventsで代用する*/\r
-        var evt = target.ownerDocument.createEvent("MouseEvents");\r
         if (obj.eventType === "repeat") {\r
+          var simpleDuration = obj.simpleDuration;\r
           /*リピートイベントが、リピート制限内である場合\r
            *numの段階で、何回リピートしたかを求める*/\r
-          obj.count = floor( (num - obj.firstFrame) / obj.simpleDuration) + 1;\r
+          detail = obj.count = floor( (num - obj.firstFrame) / simpleDuration) + 1;\r
           /*simpleDurationを足すことによって、リピートイベントが\r
            * 単純継続時間内に何度も繰り返されることを防ぐ*/\r
-          frame += obj.simpleDuration;\r
+          frame += simpleDuration;\r
           obj.frame = frame;\r
-          detail = obj.count;\r
           if (frame >= obj.limit) {\r
             cobj.next = obj.next;\r
             if (this.first === obj) {\r
@@ -1318,6 +1317,7 @@ base("$frame").up("$svgEvent").mix( {
             cobj = this.first = obj.next;\r
           }\r
         }\r
+        var evt = target.ownerDocument.createEvent("MouseEvents");\r
         evt.initMouseEvent(obj.eventType+"Event" ,true, true, window, detail, 0, 0, 0, 0, false, false, false, false, 0, target);\r
         target.dispatchEvent(evt);\r
       } else {\r
@@ -1326,7 +1326,7 @@ base("$frame").up("$svgEvent").mix( {
       }\r
       obj = obj.next;\r
     }\r
-    obj = first = frame = target = void 0;\r
+    obj = first = frame = target = cobj = simpleDuration = detail = void 0;\r
     return s;\r
   }\r
 } );\r