[Sie-announce] SIEコード [2065] SMILAnimationElementの修正

アーカイブの一覧に戻る

svnno****@sourc***** svnno****@sourc*****
2010年 10月 19日 (火) 20:46:30 JST


Revision: 2065
          http://sourceforge.jp/projects/sie/svn/view?view=rev&revision=2065
Author:   dhrname
Date:     2010-10-19 20:46:30 +0900 (Tue, 19 Oct 2010)

Log Message:
-----------
SMILAnimationElementの修正

Modified Paths:
--------------
    branches/06x/061/org/w3c/dom/svg.js

Modified: branches/06x/061/org/w3c/dom/svg.js
===================================================================
--- branches/06x/061/org/w3c/dom/svg.js	2010-10-18 14:15:10 UTC (rev 2064)
+++ branches/06x/061/org/w3c/dom/svg.js	2010-10-19 11:46:30 UTC (rev 2065)
@@ -4397,7 +4397,8 @@
   this.style.setProperty = function(){};
   this._tar = null;
   /*readonly SVGElement*/ this.targetElement;
-  this._beginValue = this._endValue = null;
+  this._beginValue = "0ms";
+  this._endValue = null;
   this._currentFrame = 0;
   this._currentCount = 0;
   /*_maxCountはrepeatCount属性で指定された数値
@@ -4414,7 +4415,7 @@
    *_beginはアニメ開始時の秒数。_endはアニメ終了時の秒数。
    *なお、文書読み込み終了時(アニメ開始時刻)の秒数を0とする。
    */
-  this._begin = 0;
+  this._begin = null;
   this._end = null;
   this._from = this._to = this._values = this._by = null;
   this._keyTimes = null;
@@ -4497,21 +4498,19 @@
       } else {
         tar.targetElement = tar.parentNode;
       }
-      if (tar._beginValue) {
-        tar._eventSync(tar._beginValue,
-            (function(te, offse, ta, t) {
-              ta.addEventListener( t.match(te._eventRegExp)[0],
-                function(){
-                  if (offse !== 0) {
-                    te.beginElementAt(offse);
-                  } else {
-                    te._begin = NAIBU.Time.currentFrame;
-                    te.beginElement();
-                    te._currentFrame++;
-                  }
-                }, false);
-              }), "beginElementAt");
-      }
+      tar._eventSync(tar._beginValue,
+          (function(te, offse, ta, t) {
+            ta.addEventListener( t.match(te._eventRegExp)[0],
+              function(){
+                if (offse !== 0) {
+                  te.beginElementAt(offse);
+                } else {
+                  te._begin = NAIBU.Time.currentFrame;
+                  te.beginElement();
+                  te._currentFrame++;
+                }
+              }, false);
+           }), "beginElementAt");
       if (tar._endValue) {
         tar._eventSync(tar._endValue,
             (function(te, offse, ta, t) {
@@ -4638,22 +4637,25 @@
         for (var i=0,ncli=nc.length;i<ncli;++i) {
           var nci = nc[i];
           nci.ownerDocument.documentElement.setCurrentTime(s);
-          if (nci.getStartTime() <= s) {
-            if (nci.getCurrentTime() === 0) {
-              nci.beginElement();
+          if ("_begin" in nci) {
+            if (nci.getStartTime() <= s) {
+              if (nci.getCurrentTime() === 0) {
+                nci.beginElement();
+              }
+              nci._currentFrame++;
             }
-            nci._currentFrame++;
-          }
-          if (nci._end) {
-            if (nci._end <= s && nci.getCurrentTime() !== 0) {
-              nci.endElement();
-              nci._currentFrame = 0;
-              nci._end = null;
+            if (nci._end) {
+              if (nci._end <= s && nci.getCurrentTime() !== 0) {
+                nci.endElement();
+                nci._currentFrame = 0;
+                delete nci._begin;
+                nci._end = null;
+              }
             }
+            if (!!nci._frame) {
+              nci._frame();
+            }
           }
-          if (!!nci._frame) {
-            nci._frame();
-          }
           nci = null;
         }
 /*      } catch (e) {




Sie-announce メーリングリストの案内
アーカイブの一覧に戻る