OSDN Git Service

Add an eventOffset property to the object
authordhrname <dhrname@users.sourceforge.jp>
Mon, 31 Aug 2015 13:05:57 +0000 (22:05 +0900)
committerdhrname <dhrname@users.sourceforge.jp>
Mon, 31 Aug 2015 13:05:57 +0000 (22:05 +0900)
org/w3c/dom/smil.js
tool/Spec/spec/SvgDomSpec.js

index 5389e93..6133df4 100644 (file)
@@ -207,6 +207,9 @@ base("$frame").mix ( {
     \r
     /*現在のフレーム数を改めて初期化*/\r
     currentFrame: 0,\r
+    \r
+    /*イベント同期で使う時間差*/\r
+    eventOffset: 0,\r
 \r
     /*trim メソッド\r
      * 文字列中の空白を除去*/\r
@@ -295,6 +298,8 @@ base("$frame").mix ( {
       if (event) {\r
         ele = event.id ? this.eventTarget.ownerDocument.getElementById(event.id)\r
                         : this.eventTarget;\r
+        /*イベントの時間差を設定しておく*/\r
+        this.eventOffset = this.begin;\r
         ele && ele.addEventListener(event.event, this.listener.bind(this), false);\r
       } else {\r
         /*イベントの影響を防ぐため*/\r
@@ -317,7 +322,7 @@ base("$frame").mix ( {
       this.activeTime = s.call();\r
       this.simpleDuration = s.simpleDur;\r
       s = void 0;\r
-      this.addLine(this);\r
+      this.$frame.addLine(this);\r
     }\r
     \r
   /*$activate オブジェクト\r
@@ -445,7 +450,7 @@ base("$frame").mix ( {
       }\r
       if (this.begin <= 0) {\r
         /*強制的に終了させる*/\r
-        this.removeLine(this.$begin);\r
+        this.$frame.removeLine(this.$begin);\r
       }\r
       this.begin += this.$frame.currentFrame - Math.floor( (Date.now() - evt.timeStamp) * this.fpms );\r
       var s = this.$begin.$activate;\r
index e13a928..df533a9 100644 (file)
@@ -2149,7 +2149,8 @@ describe("SMIL Animation Spec", function() {
       expect(begin.string).toBe("");\r
       expect(begin.isResolved).toBeFalsy();\r
       expect(begin.eventTarget).toBe(document.documentElement);\r
-      expect(typeof begin.listener).toEqual("function");\r
+      expect(typeof begin.listener).toBe("function");\r
+      expect(begin.eventOffset).toBe(0);\r
     } );\r
     /*同値分割をして、有効同値クラスを調べておく (Equivalence partitioning, the following is the valid partion)*/\r
     it("should be this for the value (the valid partion)", function() {\r
@@ -2357,10 +2358,13 @@ describe("SMIL Animation Spec", function() {
         begin.string = "-0ms";\r
         expect(begin.parse().begin).toEqual(0);\r
         \r
+        expect(begin.eventOffset).toBe(0);\r
         begin.string = "click";\r
-        expect(begin.parse().begin).toEqual(0);\r
+        expect(begin.parse().begin).toBe(0);\r
+        expect(begin.eventOffset).toBe(0);\r
         begin.string = "id.click";\r
-        expect(begin.parse().begin).toEqual(0);\r
+        expect(begin.parse().begin).toBe(0);\r
+        expect(begin.eventOffset).toBe(0);\r
       } );\r
       /*同値分割をして、有効同値クラスを調べておく (Equivalence partitioning, the following is the valid partion)*/\r
       it("should be this for the value (the valid partion)", function() {\r
@@ -2371,28 +2375,51 @@ describe("SMIL Animation Spec", function() {
         begin.isResolved = false;\r
         expect(begin.parse().begin).toEqual(Math.floor(1*begin.fpms));\r
         expect(begin.isResolved).toBeTruthy();\r
+        expect(begin.eventOffset).toBe(0);\r
 \r
         begin.string="click+0";\r
-        expect(begin.parse().begin).toEqual(0);\r
+        expect(begin.parse().begin).toBe(0);\r
+        expect(begin.eventOffset).toBe(0);\r
         begin.string = "click+1";\r
-        expect(begin.parse().begin).toEqual(1000*begin.fpms);\r
+        expect(begin.parse().begin).toBe(1000*begin.fpms);\r
+        expect(begin.eventOffset).toBe(1000*begin.fpms);\r
         begin.string = " click ";\r
         expect(begin.parse().begin).toEqual(0);\r
+        expect(begin.eventOffset).toBe(0);\r
         begin.string = "click+0ms";\r
         expect(begin.parse().begin).toEqual(0);\r
+        expect(begin.eventOffset).toBe(0);\r
         begin.string = "click-0ms";\r
         expect(begin.parse().begin).toEqual(0);\r
+        expect(begin.eventOffset).toBe(0);\r
+        begin.string = "click+100ms";\r
+        expect(begin.parse().begin).toBe(Math.floor(100*begin.fpms));\r
+        expect(begin.eventOffset).toBe(Math.floor(100*begin.fpms));\r
+        begin.string = "click-100ms";\r
+        expect(begin.parse().begin).toBe(Math.floor(-100*begin.fpms));\r
+        expect(begin.eventOffset).toBe(Math.floor(-100*begin.fpms));\r
 \r
         begin.string="id.click+0";\r
         expect(begin.parse().begin).toEqual(0);\r
+        expect(begin.eventOffset).toBe(0);\r
         begin.string = "id.click+1";\r
         expect(begin.parse().begin).toEqual(1000*begin.fpms);\r
+        expect(begin.eventOffset).toBe(1000*begin.fpms);\r
         begin.string = " id . click ";\r
         expect(begin.parse().begin).toEqual(0);\r
+        expect(begin.eventOffset).toBe(0);\r
         begin.string = "id.click+0ms";\r
         expect(begin.parse().begin).toEqual(0);\r
+        expect(begin.eventOffset).toBe(0);\r
         begin.string = "id.click-0ms";\r
         expect(begin.parse().begin).toEqual(0);\r
+        expect(begin.eventOffset).toBe(0);\r
+        begin.string = "id.click+100ms";\r
+        expect(begin.parse().begin).toBe(Math.floor(100*begin.fpms));\r
+        expect(begin.eventOffset).toBe(Math.floor(100*begin.fpms));\r
+        begin.string = "id.click-100ms";\r
+        expect(begin.parse().begin).toBe(Math.floor(-100*begin.fpms));\r
+        expect(begin.eventOffset).toBe(Math.floor(-100*begin.fpms));\r
       } );\r
       /*無効同値クラスを調べておく (Equivalence partitioning, the following is the invalid partion)*/\r
       it("should be this for the value (the invalid partion)", function() {\r