OSDN Git Service

Change a default value of the begin property
authordhrname <dhrname@users.sourceforge.jp>
Thu, 10 Nov 2016 13:34:02 +0000 (22:34 +0900)
committerdhrname <dhrname@users.sourceforge.jp>
Thu, 10 Nov 2016 13:34:02 +0000 (22:34 +0900)
org/w3c/dom/smil.js
tool/Spec/spec/SvgDomSpec.js

index 62e44a5..350ece6 100644 (file)
@@ -35,7 +35,7 @@ base("$frame").mix ( {
 \r
   /*開始フレーム数の候補。アニメーションの開始条件となる\r
    * 単位はフレーム数であって、秒数ではない*/\r
-  begin: 0,\r
+  begin: -Number.MAX_VALUE,\r
 \r
   /*活動継続時間 (Active Duration)のフレーム数。アニメーションの継続条件となる\r
    * 単位はフレーム数であって、秒数ではない*/\r
@@ -61,10 +61,10 @@ base("$frame").mix ( {
   /*setFrame メソッド\r
    * フレーム数を数値num まで進めるか、戻す*/\r
   setFrame: function( /*number*/ num) {\r
+    this.currentFrame = num;\r
     if((num < this.begin) || (num >= (this.begin+this.activeTime))) {\r
       return;\r
     }\r
-    this.currentFrame = num;\r
     var timelines = this.timelines;\r
     for (var i=0;i<timelines.length;++i) {\r
       if (timelines[i] === this) {\r
@@ -139,9 +139,9 @@ base("$frame").mix ( {
     },\r
     \r
     /*引数に渡された時刻リストの中から、現在フレームf以下の、最大値を求めるメソッド\r
-     * -1を返したときはリストの中にf以下の値がないことを示す*/\r
+     * Number.MIN_VALUEの値を返したときはリストの中にf以下の値がないことを示す*/\r
     getMaxList: function (f, list) {\r
-      var maxTime = -1; /*時刻の最大値*/\r
+      var maxTime = -Number.MAX_VALUE; /*時刻の最大値*/\r
       while( list ) {\r
         var v = list.value;\r
         /*f以下の開始リスト値のうち、最大値をmaxTimeに代入*/\r
@@ -195,12 +195,16 @@ base("$frame").mix ( {
        * 現在フレーム数 f より大きい数値は、更新できる条件と無関係なので、除外しておく\r
        * だから、f以下の値の中から、最大値を探して、\r
        * それをbeginプロパティの値cacheBeginと比較する*/\r
-      var startTime = this.getMaxList(f, this.beginList),\r
-          endTime = this.getMaxList(f, this.endList),\r
+      var startTime = this.getMaxList(f, this.beginList);\r
+      //if (startTime === -Number.MAX_VALUE) {\r
+      //  return this;\r
+      //}\r
+      var endTime = this.getMaxList(f, this.endList),\r
           isWait = (state === wait),\r
           cacheBegin = this.begin;\r
       if ( !startTime && isWait) {\r
-          /*開始時刻が0ならば、アニメーションを開始*/\r
+          /*開始時刻が0ならば、アニメーションを開始\r
+           * ただし、アニメが終了した後のPOSTWAITING状態の時には作動させない*/\r
           this.begin = 0;\r
           this.state = begin;\r
       } else if ( isWait || (state === post) ) {\r
index b67e62d..8a48c31 100644 (file)
@@ -40,6 +40,7 @@ describe("SMIL Animation Spec", function() {
       expect(frame.timelines.length).toBe(0);\r
       expect(frame.isBegin).toBeFalsy();\r
       expect(frame.startAnimation()).toBeUndefined();\r
+      expect(frame.begin).toBe(-Number.MAX_VALUE);\r
       frame.setFrame();\r
       frame.setFrame(0);\r
       /*負の値も許される*/\r
@@ -76,7 +77,7 @@ describe("SMIL Animation Spec", function() {
         /*負荷をかけて、時間を進める*/\r
         1;\r
       }\r
-      expect(frame.begin).toBe(0);\r
+      expect(frame.begin).toBe(-Number.MAX_VALUE);\r
       expect(frame.activeTime).toBe(Number.MAX_VALUE);\r
       frame.begin = 10;\r
       frame.setFrame(0);\r
@@ -205,8 +206,8 @@ describe("SMIL Animation Spec", function() {
           value: Number.MAX_VALUE\r
         });\r
         \r
-      expect(frame.getMaxList(0, frame.beginList)).toBe(-1);\r
-      expect(frame.getMaxList(0, frame.endList)).toBe(-1);\r
+      expect(frame.getMaxList(0, frame.beginList)).toBe(-Number.MAX_VALUE);\r
+      expect(frame.getMaxList(0, frame.endList)).toBe(-Number.MAX_VALUE);\r
       \r
       frame.begin = 12;\r
       frame.init();\r