X-Git-Url: http://git.osdn.jp/view?p=pettanr%2FclientJs.git;a=blobdiff_plain;f=0.6.x%2Fjs%2F02_dom%2F10_XNodeAnime.js;fp=0.6.x%2Fjs%2F02_dom%2F10_XNodeAnime.js;h=e856bd85bffec7205f5adf92fc62fa3cd75144b1;hp=3464ffb0e7396b43d2af1e4b328bbab097eb8707;hb=3d10dbbb167c89638f3bea6c267de8763274d30c;hpb=3c54df5e0d4f20eb32cfd73480cbc9ae8358ebbf diff --git a/0.6.x/js/02_dom/10_XNodeAnime.js b/0.6.x/js/02_dom/10_XNodeAnime.js index 3464ffb..e856bd8 100644 --- a/0.6.x/js/02_dom/10_XNodeAnime.js +++ b/0.6.x/js/02_dom/10_XNodeAnime.js @@ -7,14 +7,12 @@ var X_NodeAnime_QUEUE = [], X_NodeAnime_hasTransform = !!X_Node_CSS_VENDER_PREFIX[ 'transform' ], - X_NodeAnime_hasDXTransform = 5.5 <= X_UA[ 'IE' ] && X_UA[ 'IE' ] < 9 && X_UA[ 'ActiveX' ], + X_NodeAnime_hasDXTransform = 5.5 <= X_UA[ 'IE' ] && X_UA[ 'IE' ] < 9 && X_UA[ 'ActiveX' ], // IEHost が 11 の場合不可 /* Opera mobile で translateZ(0) が有効だと XY が 0 0 になる */ /* GPUレイヤーにいる間に要素のコンテンツを変更をすると transitionend が動かなくなるっぽい Mac safari と firefox */ X_NodeAnime_translateZ = X_Node_CSS_VENDER_PREFIX[ 'perspective' ] && !X_UA[ 'OperaMobile' ] && !X_UA[ 'OperaTablet' ] ? ' translateZ(0)' : '', - X_NodeAnime_transitionProps = X_NodeAnime_hasTransform ? X_Node_CSS_VENDER_PREFIX[ 'transform' ] : 'left,top'; - /* * phase: * 0: アニメーション無 @@ -27,7 +25,7 @@ var X_NodeAnime_QUEUE = [], * 7: アニメーション中 */ -var X_NODE_ANIME_RESET = 1, + X_NODE_ANIME_RESET = 1, X_NODE_ANIME_STAY_GPU = 2, X_NodeAnime_DEFAULT = { @@ -47,7 +45,7 @@ var X_NODE_ANIME_RESET = 1, scrollY : NaN, fromScrollY : NaN, toScrollY : NaN //, //doScroll : false//, //duration : 0 - //phase, lazyRelease, easing, follower, releaseNow, inited, progress doScroll, fallbackKind + //phase, lazyRelease, easing, follower, releaseNow, inited, progress, fallback // fromTime, toTime }; @@ -144,6 +142,8 @@ function X_Node_animate( obj ){ obj.transform = ( X_Type_isFinite( obj.x ) || X_Type_isFinite( obj.y ) || obj.lazyRelease ) && X_NodeAnime_hasTransform; obj.doScroll = 0 <= obj.toScrollX || 0 <= obj.toScrollY; obj.fallback = 0; + obj.altX = fallback & 8 ? 'right' : 'left'; + obj.altY = fallback & 16 ? 'bottom' : 'top'; // scale if( obj.toScaleX !== 1 && obj.fromScaleX !== 1 && obj.toScaleY !== 1 && obj.fromScaleY !== 1 ){ @@ -152,8 +152,8 @@ function X_Node_animate( obj ){ if( X_NodeAnime_hasTransform ){ obj.transform = true; } else - if( X_NodeAnime_hasDXTransform && ( fallback & 16 ) ){ // DX Transform - obj.fallback = 16; + if( X_NodeAnime_hasDXTransform && ( fallback & 32 ) ){ // DX Transform + obj.fallback = 32; } else if( ( fallback & 4 ) && sameRate ){ // zoom obj.fallback = 4; @@ -171,8 +171,8 @@ function X_Node_animate( obj ){ if( X_NodeAnime_hasTransform ){ obj.transform = true; } else - if( X_NodeAnime_hasDXTransform && ( fallback & 16 ) ){ // DX Transform - obj.fallback = 16; + if( X_NodeAnime_hasDXTransform && ( fallback & 32 ) ){ // DX Transform + obj.fallback = 32; }; }; @@ -549,11 +549,11 @@ function X_NodeAnime_updatePosition( xnode, obj, ratio, useGPU ){ }; }; } else - if( obj.fallback === 16 ){ - xnode[ 'css' ]( 'dxtransform', [ x | 0, y | 0, rotate || 0, skewX || 0, skewY || 0, scaleX, scaleY ] ); + if( obj.fallback === 32 ){ + xnode[ 'css' ]( 'dxtransform', [ x | 0, y | 0, rotate || 0, skewX || 0, skewY || 0, scaleX, scaleY, obj.altX, obj.altY ] ); } else { - x === x && xnode[ 'css' ]( 'left', ( x | 0 ) + 'px' ); - y === y && xnode[ 'css' ]( 'top', ( y | 0 ) + 'px' ); + x === x && xnode[ 'css' ]( obj.altX, ( x | 0 ) + 'px' ); + y === y && xnode[ 'css' ]( obj.altY, ( y | 0 ) + 'px' ); switch( obj.fallback ){ case 4 : @@ -570,8 +570,8 @@ function X_NodeAnime_updatePosition( xnode, obj, ratio, useGPU ){ if( obj.doScroll && xnode[ '_rawObject' ] ){ console.log( 'ok ' + ratio ); - xnode[ '_rawObject' ].scrollLeft = obj.scrollX | 0; - xnode[ '_rawObject' ].scrollTop = obj.scrollY | 0; + xnode[ '_rawObject' ].scrollLeft = obj.scrollX | 0; + xnode[ '_rawObject' ].scrollTop = obj.scrollY | 0; //X_Node_reserveUpdate(); };