- for( ; i; ){\r
- xnode = X_Node_ANIMATIONS[ --i ];\r
- obj = xnode._anime;\r
-\r
- if( obj.destTime <= now ){\r
- X_Node_Anime_updatePosition( xnode, obj.destX, obj.destY, obj.destA, false );\r
- //xnode.asyncDispatch( 'transitionend' );\r
- delete xnode._anime;\r
- X_Node_ANIMATIONS.splice( i, 1 );\r
- \r
- // filter な 親が解除されないと子要素への filter が反映されない\r
- xnode.asyncDispatch( { type : X.Event.ANIME_END, gpu : false } );\r
- } else {\r
- easing = obj.easing.fn( ( now - obj.startTime ) / obj.duration );\r
- newX = ( obj.destX - obj.startX ) * easing + obj.startX;\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
- obj.x = newX;\r
- obj.y = newY;\r
- obj.a = newA;\r
- c = true; \r
+ //console.log( 'updatePosition x:' + x + ' gpu:' + !!useGPU );\r
+ if( obj.transform ){\r
+ if( ( x === x || y === y ) && ( x !== 0 && y !== 0 ) ){\r
+ if( X_UA[ 'Safari' ] && X_UA[ 'Windows' ] ){\r
+ // http://shinimae.hatenablog.com/entry/2016/01/13/151748\r
+ str = ' -webkit-translate(' + ( x | 0 ) + 'px,' + ( y | 0 ) + 'px)';\r
+ } else {\r
+ str = ' translate(' + ( x | 0 ) + 'px,' + ( y | 0 ) + 'px)';\r
+ };\r
+ };\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
+ if( scaleX < 1 || 1 < scaleX ) str += ' scaleX(' + scaleX + ')';\r
+ if( scaleY < 1 || 1 < scaleY ) str += ' scaleY(' + scaleY + ')';\r
+ xnode[ 'css' ]( 'transform', ( str ? str.substr( 1 ) : '' ) + ( useGPU ? X_NodeAnime_translateZ : '' ) );\r
+ \r
+ if( X_NodeAnime_translateZ ){\r
+ if( useGPU ){\r
+ if( xnode[ '_flags' ] & X_NodeFlags_GPU_RELEASE_RESERVED ){\r
+ xnode[ '_flags' ] &= X_Node_BitMask_RESET_GPU;\r
+ xnode[ '_flags' ] |= X_NodeFlags_GPU_NOW;\r
+ } else\r
+ if( !( xnode[ '_flags' ] & X_NodeFlags_GPU_NOW ) ){\r
+ xnode[ '_flags' ] &= X_Node_BitMask_RESET_GPU;\r
+ xnode[ '_flags' ] |= X_NodeFlags_GPU_RESERVED;\r
+ };\r
+ } else {\r
+ if( xnode[ '_flags' ] & X_NodeFlags_GPU_NOW ){\r
+ xnode[ '_flags' ] &= X_Node_BitMask_RESET_GPU;\r
+ xnode[ '_flags' ] |= X_NodeFlags_GPU_RELEASE_RESERVED;\r
+ } else\r
+ if( xnode[ '_flags' ] & X_NodeFlags_GPU_RESERVED ){\r
+ xnode[ '_flags' ] &= X_Node_BitMask_RESET_GPU;\r
+ };\r
+ }; \r
+ }; \r
+ } else\r
+ if( obj.fallback === 32 ){\r
+ xnode[ 'css' ]( 'dxtransform', [ x | 0, y | 0, rotate || 0, skewX || 0, skewY || 0, scaleX, scaleY, obj.altX, obj.altY ] );\r
+ } else {\r
+ x === x && xnode[ 'css' ]( obj.altX, ( x | 0 ) + 'px' );\r
+ y === y && xnode[ 'css' ]( obj.altY, ( y | 0 ) + 'px' );\r
+ \r
+ switch( obj.fallback ){\r
+ case 4 :\r
+ xnode[ 'css' ]( 'zoom', scaleX );\r
+ break;\r
+ case 2 :\r
+ xnode[ 'css' ]( 'fontSize', scaleX + 'em' );\r
+ break;\r
+ case 1 :\r
+ \r
+ break;\r