OSDN Git Service

Add the initTargetElement method to the
authordhrname <dhrname@users.sourceforge.jp>
Sat, 24 Sep 2016 13:43:50 +0000 (22:43 +0900)
committerdhrname <dhrname@users.sourceforge.jp>
Sat, 24 Sep 2016 13:43:50 +0000 (22:43 +0900)
org/w3c/dom/smil.js

index 863debf..3ea62d2 100644 (file)
@@ -837,6 +837,23 @@ base("$calcMode").up("$attribute").mix( {
     this.__cacheAttr = "";\r
     value = attrName = ele = void 0;\r
   },\r
+  \r
+  /*アニメーションの対象となる要素を値として返すメソッド\r
+   * もっぱら、pushメソッドで使われる*/\r
+  initTargetElement: function(ele) {\r
+    var s = ele.parentNode || null;\r
+    console.log(s, ele.parentNode);\r
+    var id = ele.getAttributeNS(null, "targetElement");\r
+    if (id) {\r
+      return ele.ownerDocument.getElementById(id);\r
+    }\r
+    /*getAttributeNSメソッドでうまくいかなかったため、NSなしで代用*/\r
+    if ( id = ele.getAttribute("xlink:href") ) {\r
+      return ele.ownerDocument.getElementById(id.slice(1));\r
+    }\r
+    ele = id = void 0;\r
+    return s;\r
+  },\r
 \r
   /*引数で指定した要素 ele の属性を解析して、フレームに追加する*/\r
   push: function(/*Element Node*/ ele) {\r
@@ -845,17 +862,8 @@ base("$calcMode").up("$attribute").mix( {
     }\r
     /*キャッシュを初期化しておく*/\r
     this.__cacheAttr = "";\r
-    this.element = ele.parentNode || null;\r
-    var id;\r
-    if ( id = ele.getAttributeNS(null, "targetElement") ) {\r
-      this.element = ele.ownerDocument.getElementById(id);\r
-    }\r
-    /*getAttributeNSメソッドでうまくいかなかったため、NSなしで代用*/\r
-    if ( id = ele.getAttribute("xlink:href") ) {\r
-      this.element = ele.ownerDocument.getElementById(id.slice(1));\r
-    }\r
    /*getAttrメソッドとhasAttrValuesメソッドで必要*/\r
-    this._ele = ele;\r
+    this.ele = ele;\r
     if (!this.hasAttrValues()) {\r
       /*from属性、to、by、values属性が指定されていない場合、アニメーションの効果が出ないように調整する\r
        *SMILアニメーションの仕様を参照\r
@@ -867,6 +875,9 @@ base("$calcMode").up("$attribute").mix( {
       return null;\r
     }\r
     \r
+    /*initTargetElementメソッドを使って、elementプロパティの初期化*/\r
+    this.element = this.initTargetElement(ele);\r
+    \r
     /*属性値の設定*/\r
     this.attrName = this.getAttr("attributeName", "");\r
     var attrName = this.attrName;\r
@@ -945,7 +956,7 @@ base("$calcMode").up("$attribute").mix( {
     }\r
     /*setFrameメソッドを使ったときの、再帰スタックの使いすぎを防ぐため*/\r
     frame.timelines = [];\r
-    begin = ele = id = void 0;\r
+    begin = ele = void 0;\r
     return frame;\r
   },\r
   \r
@@ -1768,7 +1779,6 @@ base("$calcMode").up("$attribute").mix( {
     this.rotate = this.getAttr("rotate", "0");\r
     this.path = this.path.cloneNode(true);\r
     var mpath = ele.getElementsByTagNameNS(this.path.namespaceURI, "mpath");\r
-    var list = this.element.__transformList;\r
     /*$animateは後で、プロパティを書き換えるために使う。tocallメソッドも参照*/\r
     var $animate = this.$animateElement;\r
     if (mpath.length) {\r