pauseAnimation: function() {\r
this.isPaused = true;\r
},\r
+ \r
+ /*後述のinitilizeメソッドで使うオブジェクトリスト*/\r
+ objList: [],\r
+ \r
+ /*オブジェクトの初期化処理*/\r
+ initilize: function() {\r
+ var list = this.objList;\r
+ for (var i=0;i<list.length;++i) {\r
+ list[i].initilize();\r
+ }\r
+ },\r
\r
/*setFrame メソッド\r
* フレーム数を数値num まで進めるか、戻す*/\r
* getElementsByTagNameNSメソッドの返り値の入力を想定*/\r
elementList: [],\r
\r
+ /*何番目からelementListを処理しているかの数値*/\r
+ nubmerOfelemList: 0,\r
+ \r
/*initilize メソッド\r
* 要素リストを初期化させる\r
* 初期化処理を分散させるために使う*/\r
initilize: function() {\r
var eles = this.elementList;\r
- for (var i=0;i<eles.length;++i) {\r
+ if (!eles.length) {\r
+ return;\r
+ }\r
+ var length = this.nubmerOfelemList+30;\r
+ for (var i=length-30; i<eles.length; ++i) {\r
+ if (length <= i) {\r
+ /*もう初期化する必要がないので終了*/\r
+ return;\r
+ }\r
this.up().init(eles.item(i));\r
}\r
- eles = void 0;\r
+ this.nubmerOfelemList += 30;\r
+ eles = length = void 0;\r
},\r
\r
/*initメソッドで使われるアニメーション関数*/\r
/*文書からアニメーション関連要素を取り出して、オブジェクトを初期化*/\r
function getElement (svgDoc) {\r
var $set = base("$calcMode").$attribute.$setElement,\r
- $animate = $set.$animateElement;\r
+ $animate = $set.$animateElement,\r
+ frame = base("$frame");\r
init($set, "set");\r
init($animate, "animate");\r
- init($animate, "animateColor");\r
+ init($animate.up(), "animateColor");\r
init($animate.$animateTransformElement, "animateTransform");\r
init($animate.$animateTransformElement.$motionElement, "animateMotion");\r
/*リンクのハッシュ読み取りで、ハイパーリンクのイベント処理\r
var hash = svgDoc.defaultView.location.hash.slice(1);\r
svgDoc.getElementById(hash).beginElement();\r
});\r
- \r
function init (obj, name) {\r
- var eles = svgDoc.getElementsByTagNameNS(svgns, name)\r
- for (var i=0;i<eles.length;++i) {\r
- obj.up().init(eles.item(i));\r
+ /*あとでframe.initilizeメソッドで呼び出すために準備しておく*/\r
+ obj.elementList = svgDoc.getElementsByTagNameNS(svgns, name);\r
+ if (obj.elementList.length) {\r
+ frame.objList.push(obj);\r
}\r
eles = obj = void 0;\r
};\r
if (!this.isPaused) {\r
frame++;\r
try {\r
+ this.initilize();\r
this.setFrame(frame);\r
} catch(e) {\r
}\r
var $f = base("$frame");\r
return function () {\r
frame++;\r
+ $f.initilize();\r
$f.setFrame(frame);\r
};\r
})(-1), 1 );\r
expect(frame.isPaused).toBeFalsy();\r
expect(frame.pauseAnimation()).toBeUndefined();\r
expect(frame.isPaused).toBeTruthy();\r
-\r
+ \r
+ expect(frame.objList).toEqual([]);\r
+ expect(frame.initilize()).toBeUndefined();\r
});\r
/*同値分割をして、有効同値クラスを調べておく (Equivalence partitioning, the following is the valid partion)*/\r
it("should be this for the value (the valid partion)", function() {\r
expect($set.isDefault).toBeFalsy();\r
expect($set.attrNameSpace).toBeNull();\r
expect($set.timeline).toBe(frame.$begin);\r
+ expect($set.nubmerOfelemList).toBe(0);\r
\r
expect($set.elementList.length).toBe(0);\r
$set.initilize();\r
$set.elementList = null;\r
- expect( function() {$set.initilize()}).toThrow();\r
+ expect($set.initilize()).toBeUndefined();\r
} );\r
/*同値分割をして、有効同値クラスを調べておく (Equivalence partitioning, the following is the valid partion)*/\r
it("should be this for the value (the valid partion )", function() {\r
document.documentElement.appendChild(ele);\r
$set.elementList = document.getElementsByTagNameNS("http://www.w3.org/2000/svg", "set");\r
frame.timelines.length = 0;\r
+ var setinit = $set.initilize;\r
$set.initilize();\r
+ expect($set.initilize).not.toBe(setinit);\r
expect(frame.timelines.length).toBe($set.elementList.length);\r
} );\r
/*無効同値クラスを調べておく (Equivalence partitioning, the following is the invalid partion)*/\r