-Node.prototype.stop = function(){\r
- var obj = this._anime;\r
- if( !obj ) return;\r
- if( X_Node_Anime_hasTransition ){\r
- obj.phase = 100;\r
- X_Node_Anime_needsDetection = true;\r
- X_Node_Anime_reserveUpdate();\r
- } else {\r
- X_Node_ANIMATIONS.splice( X_Node_ANIMATIONS.indexOf( this ), 1 );\r
- //obj.gpuTimerID && X.Timer.remove( obj.gpuTimerID );\r
- delete this._anime; \r
+function X_NodeAnime_getFinite( a, b ){\r
+ if( a || a === 0 ) return a;\r
+ if( b || b === 0 ) return b;\r
+ return NaN;\r
+};\r
+\r
+/*\r
+ * 1.アニメーション中の要素の停止 ->後続アニメーションの開始\r
+ * 2.アニメーション待機中の要素の停止 -> 後続アニメーションの再調査\r
+ */\r
+/**\r
+ * アニメーションの停止。\r
+ * @alias Node.prototype.stop\r
+ * @return {Node} メソッドチェーン\r
+ */\r
+function X_Node_stop( option ){\r
+ var obj = this[ '_anime' ],\r
+ list = X_NodeAnime_QUEUE,\r
+ i, rm, j, xnode, _obj;\r
+ \r
+ if( !obj || !obj.phase ) return this;\r
+\r
+ switch( obj.phase ){\r
+ case 6 : // アニメーション開始可能 ??\r
+ case 2 : // 準待機\r
+ case 3 : // アニメーション待機中\r
+ X_NodeAnime_needsDetection = true;\r
+ case 1 :\r
+ rm = true;\r
+\r
+ case 4 : // 強制停止(GPU転送予約)\r
+ case 7 : // アニメーション中\r
+ if( option & X_NODE_ANIME_RESET ){\r
+ obj.startX = obj.startY = obj.destX = obj.destY = obj.x = obj.y = 0;\r
+ obj.startA = obj.destA = obj.a = 1;\r
+ }; // TODO 終了値で停止も,,,\r
+ \r
+ // obj.canceled = true;\r
+ \r
+ if( rm ) break; // 1,2,3,6 の場合ここまで\r
+ \r
+ obj.destX = obj.x;\r
+ obj.destY = obj.y;\r
+ obj.destA = obj.a;\r
+\r
+ obj.phase = 4; // 強制解除\r
+ X_NodeAnime_needsDetection = true;\r
+ \r
+ case 5 : // GPU解除待ち\r
+ obj.releaseNow = !( option & X_NODE_ANIME_STAY_GPU );\r
+ break;\r
+ };\r
+\r
+ if( rm ){\r
+ list.splice( list.indexOf( this ), 1 );\r
+ obj.phase = 0; \r