X_Node_Anime_updateTimerID = 0,\r
X_Node_Anime_needsDetection = false,\r
X_Node_Anime_hasTransform = !!X_Node_CSS_VENDER_PREFIX[ 'transform' ],\r
X_Node_Anime_updateTimerID = 0,\r
X_Node_Anime_needsDetection = false,\r
X_Node_Anime_hasTransform = !!X_Node_CSS_VENDER_PREFIX[ 'transform' ],\r
X_Node_Anime_translateZ = X_Node_CSS_VENDER_PREFIX[ 'perspective' ] && !X.UA.OperaMobile && !X.UA.OperaTablet ? ' translateZ(0)' : '',\r
X_Node_Anime_hasTransition = !!X_Node_CSS_VENDER_PREFIX[ 'transitionDelay' ] && !X.UA.Opera, // Opera12(XP,8.1) 切った方がスムース\r
X_Node_Anime_transitionProps = X_Node_Anime_hasTransform ? X_Node_CSS_VENDER_PREFIX[ 'transform' ] : 'left,top';\r
\r
Node.prototype.animate = function( start, dest, duration, easing, wait ){\r
X_Node_Anime_translateZ = X_Node_CSS_VENDER_PREFIX[ 'perspective' ] && !X.UA.OperaMobile && !X.UA.OperaTablet ? ' translateZ(0)' : '',\r
X_Node_Anime_hasTransition = !!X_Node_CSS_VENDER_PREFIX[ 'transitionDelay' ] && !X.UA.Opera, // Opera12(XP,8.1) 切った方がスムース\r
X_Node_Anime_transitionProps = X_Node_Anime_hasTransform ? X_Node_CSS_VENDER_PREFIX[ 'transform' ] : 'left,top';\r
\r
Node.prototype.animate = function( start, dest, duration, easing, wait ){\r
- var obj = this._anime || ( this._anime = {} );\r
+ var obj = this._anime || ( this._anime = {} ), current;\r
+ \r
+ if( X_Node_Anime_hasTransition && this._rawObject ){\r
+ current = X_Node_Anime_getComputedPosition( this );\r
+ };\r
\r
obj.duration = X.Type.isFinite( duration ) && 0 <= duration ? duration : 500;\r
obj.easing = ease[ easing ] || ease.circular;\r
\r
obj.duration = X.Type.isFinite( duration ) && 0 <= duration ? duration : 500;\r
obj.easing = ease[ easing ] || ease.circular;\r
- obj.startX = start.x || 0;\r
- obj.startY = start.y || 0;\r
- obj.startA = 0 <= start.opacity && start.opacity <= 1 ? start.opacity : 1;\r
+ obj.startX = ( start.x || start.x === 0 ) ? start.x : obj.x || current && current.x || 0;\r
+ obj.startY = ( start.y || start.y === 0 ) ? start.y : obj.y || current && current.y || 0;\r
+ obj.startA = 0 <= start.opacity && start.opacity <= 1 ? start.opacity : obj.a || current && current.a || 1;\r
- obj.destX = dest.x || 0;\r
- obj.destY = dest.y || 0;\r
- obj.destA = 0 <= dest.opacity && dest.opacity <= 1 ? dest.opacity : 1;\r
+ obj.destX = ( dest.x || dest.x === 0 ) ? dest.x : obj.destX || 0;\r
+ obj.destY = ( dest.y || dest.y === 0 ) ? dest.y : obj.destY || 0;\r
+ obj.destA = 0 <= dest.opacity && dest.opacity <= 1 ? dest.opacity : obj.destA || 1;\r
X_Node_ANIMATIONS.indexOf( this ) === -1 &&\r
( X_Node_ANIMATIONS[ X_Node_ANIMATIONS.length ] = this );\r
\r
X_Node_ANIMATIONS.indexOf( this ) === -1 &&\r
( X_Node_ANIMATIONS[ X_Node_ANIMATIONS.length ] = this );\r
\r
function X_Node_Anime_updateAnimations(){\r
var i = X_Node_ANIMATIONS.length, ret, c = false;\r
\r
function X_Node_Anime_updateAnimations(){\r
var i = X_Node_ANIMATIONS.length, ret, c = false;\r
\r
ret = X_Node_Anime_updateAnimation( xnode );\r
if( ret === true ){\r
X_Node_ANIMATIONS.splice( i, 1 );\r
ret = X_Node_Anime_updateAnimation( xnode );\r
if( ret === true ){\r
X_Node_ANIMATIONS.splice( i, 1 );\r
var i = X_Node_ANIMATIONS.length,\r
l = i,\r
j, xnode, parent, hasGPUChild, changed, remove;\r
var i = X_Node_ANIMATIONS.length,\r
l = i,\r
j, xnode, parent, hasGPUChild, changed, remove;\r
// 新規\r
changed = changed || !xnode._anime.gpuParent;\r
xnode._anime.phase = hasGPUChild ? 7 : 8;// 非GPU -> GPU 子に GPU アニメをもつなら、タイミングをずらす。\r
// 新規\r
changed = changed || !xnode._anime.gpuParent;\r
xnode._anime.phase = hasGPUChild ? 7 : 8;// 非GPU -> GPU 子に GPU アニメをもつなら、タイミングをずらす。\r
current = X_Node_Anime_getComputedPosition( xnode );\r
\r
X_Node_Anime_updateTransition( xnode, 0 );\r
current = X_Node_Anime_getComputedPosition( xnode );\r
\r
X_Node_Anime_updateTransition( xnode, 0 );\r
newY = ( obj.destY - obj.startY ) * easing + obj.startY;\r
newA = ( obj.destA - obj.startA ) * easing + obj.startA;\r
X_Node_Anime_updatePosition( xnode, newX, newY, newA, false );\r
newY = ( obj.destY - obj.startY ) * easing + obj.startY;\r
newA = ( obj.destA - obj.startA ) * easing + obj.startA;\r
X_Node_Anime_updatePosition( xnode, newX, newY, newA, false );\r