/* Opera mobile で translateZ(0) が有効だと XY が 0 0 になる */\r
/* GPUレイヤーにいる間に要素のコンテンツを変更をすると transitionend が動かなくなるっぽい Mac safari と firefox */\r
X_NodeAnime_translateZ = X_Node_CSS_VENDER_PREFIX[ 'perspective' ] &&\r
- !X_UA[ 'OperaMobile' ] && !X_UA[ 'OperaTablet' ] //&&\r
- /* ハードウェアによると思うが IE11 と Win8.1 で画面(塗)が乱れる */\r
- /* !( ( X_UA[ 'IE' ] === 11 || X_UA[ 'IEHost' ] === 11 ) && X_UA[ 'Windows' ] === 8.1 ) */ ? ' translateZ(0)' : '',\r
+ !X_UA[ 'OperaMobile' ] && !X_UA[ 'OperaTablet' ] &&\r
+ !( X_UA[ 'IE' ] === 11 ) && !( X_UA[ 'IEHost' ] === 11 ) ? ' translateZ(0)' : '',\r
\r
/*\r
* phase:\r
obj.phase = 4; // 強制停止(GPU転送予約)または値のみ更新\r
obj.releaseNow = false; // TODO folower がいるため GPU 転送できないケースあり\r
X_NodeAnime_needsDetection = true;\r
+ } else {\r
+ obj.phase = 1;\r
+ X_NodeAnime_needsDetection = true;\r
};\r
\r
if( !X_NodeAnime_reserved ){\r
now = X_Timer_now(),\r
c = false,\r
i, xnode, obj, _xnode,\r
- rm, easing, lazy;\r
+ rm, progress, easing, lazy;\r
\r
if( X_NodeAnime_needsDetection ){\r
X_NodeAnime_needsDetection = false;\r
switch( obj.phase ){\r
case 7 : // アニメーション中\r
if( now < obj.toTime ){\r
- obj.progress = ( now - obj.fromTime ) / obj.duration;\r
- easing = obj.easing( obj.progress );\r
+ obj.progress = progress = ( now - obj.fromTime ) / obj.duration;\r
+ easing = obj.easing( progress );\r
obj.x = ( obj.toX - obj.fromX ) * easing + obj.fromX;\r
obj.y = ( obj.toY - obj.fromY ) * easing + obj.fromY;\r
obj.rotate = ( obj.toRotate - obj.fromRotate ) * easing + obj.fromRotate;\r
obj.alpha = ( obj.toAlpha - obj.fromAlpha ) * easing + obj.fromAlpha;\r
obj.scrollX = ( obj.toScrollX - obj.fromScrollX ) * easing + obj.fromScrollX;\r
obj.scrollY = ( obj.toScrollY - obj.fromScrollY ) * easing + obj.fromScrollY;\r
- X_NodeAnime_updatePosition( xnode, obj, obj.progress, true );\r
+ X_NodeAnime_updatePosition( xnode, obj, progress, true );\r
c = true;\r
break;\r
};\r
\r
//console.log( 'updatePosition x:' + x + ' gpu:' + !!useGPU );\r
if( obj.transform ){\r
- if( x === x || y === y ) str += ' translate(' + ( x | 0 ) + 'px,' + ( y | 0 ) + 'px)';\r
+ if( ( x === x || y === y ) && ( x !== 0 && y !== 0 ) ) str += ' translate(' + ( x | 0 ) + 'px,' + ( y | 0 ) + 'px)';\r
if( rotate < 0 || 0 < rotate ) str += ' rotate(' + rotate + 'deg)'; // opera は rad?\r
if( skewX < 0 || 0 < skewX ) str += ' skewX(' + skewX + 'deg)';\r
if( skewY < 0 || 0 < skewY ) str += ' skewY(' + skewY + 'deg)';\r