OSDN Git Service

Modify the parse method
authordhrname <dhrname@users.sourceforge.jp>
Tue, 18 Oct 2016 14:13:13 +0000 (23:13 +0900)
committerdhrname <dhrname@users.sourceforge.jp>
Tue, 18 Oct 2016 14:13:13 +0000 (23:13 +0900)
org/w3c/dom/smil.js

index f38df74..fdf2716 100644 (file)
@@ -361,7 +361,14 @@ base("$frame").mix ( {
     _parse: function (str) {\r
       var plusminus = str.search(/[\+\-]/),\r
           event = null,\r
-          ele;\r
+          ele,\r
+          /*endListのvalueプロパティには、活動継続フレーム数と開始フレーム数を足したものが入る*/\r
+          endList = this.$list.addEndList(Number.MAX_VALUE);\r
+      if (this.$end) {\r
+        /*$endオブジェクトを継承していた場合、\r
+         *活動継続フレーム数関連のリストは無効とする*/\r
+        endList = { value: 0};\r
+      }\r
       if (str === "indefinite") {\r
         this.begin = Number.MAX_VALUE;\r
       } else if (plusminus > 0) {\r
@@ -396,6 +403,7 @@ base("$frame").mix ( {
         /*イベントのリスナーとして使う*/\r
             listener = function(evt) {\r
               objList.value = this.begin = eventOffset + this.$frame.currentFrame;\r
+              endList.value = this.$list.begin + this.activeTime;\r
               this.isResolved = true;\r
             };\r
         this.eventOffset = eventOffset;\r
@@ -416,7 +424,9 @@ base("$frame").mix ( {
         }\r
       } else {\r
         /*開始リストに登録しておく($endの場合は終了リストに登録)*/\r
-        var objList = this.$list.addList(this.begin);\r
+        this.$list.addList(this.begin);\r
+        /*活動継続時間から算出される終了フレーム数は、終了リストに入れておく*/\r
+        endList.value = this.$list.begin + this.activeTime;\r
       }\r
       s = event = str = plusminus = ele = void 0;\r
     },\r
@@ -429,6 +439,10 @@ base("$frame").mix ( {
       this.isResolved = false;\r
       /*$listオブジェクトを更新*/\r
       this.$list = this.$list.up();\r
+      /*beginとend属性を考慮に入れないで、活動継続時間を求める*/\r
+      var s = this.$activate.up();\r
+      this.activeTime = s.call() || Number.MAX_VALUE;\r
+      this.simpleDuration = s.simpleDur;\r
       var str = this.trim(this.string);\r
       if (str.indexOf(";") > -1){\r
         /*;で区切られたリストを一つずつ解析*/\r
@@ -439,10 +453,6 @@ base("$frame").mix ( {
       } else {\r
         this._parse(str);\r
       }\r
-      /*beginとend属性を考慮に入れないで、活動継続時間を求める*/\r
-      var s = this.$activate.up();\r
-      this.activeTime = s.call() || Number.MAX_VALUE;\r
-      this.simpleDuration = s.simpleDur;\r
       s = str = void 0;\r
       return this;\r
     },\r