OSDN Git Service

Verison 0.6.203, fix X.Node.Anime.
[pettanr/clientJs.git] / 0.6.x / js / 02_dom / 10_XNodeAnime.js
index 4613689..3464ffb 100644 (file)
@@ -25,19 +25,18 @@ var X_NodeAnime_QUEUE           = [],
  *  5: GPU解除待ち\r
  *  6: 開始可能\r
  *  7: アニメーション中\r
- * TODO node.css( 'opacity' ) の上書き\r
  */\r
 \r
 var X_NODE_ANIME_RESET = 1,\r
        X_NODE_ANIME_STAY_GPU = 2,\r
        \r
        X_NodeAnime_DEFAULT = {\r
-               x        : X_NodeAnime_hasTransform ? 0 : NaN,\r
-               y        : X_NodeAnime_hasTransform ? 0 : NaN,\r
-               toX      : X_NodeAnime_hasTransform ? 0 : NaN,\r
-               toY      : X_NodeAnime_hasTransform ? 0 : NaN,\r
-               fromX    : X_NodeAnime_hasTransform ? 0 : NaN,\r
-               fromY    : X_NodeAnime_hasTransform ? 0 : NaN,\r
+               x        : NaN,\r
+               y        : NaN,\r
+               toX      : NaN,\r
+               toY      : NaN,\r
+               fromX    : NaN,\r
+               fromY    : NaN,\r
                rotate   : NaN, fromRotate   : NaN, toRotate   : NaN,\r
                skewX    : NaN, fromSkewX    : NaN, toSkewX    : NaN,\r
                skewY    : NaN, fromSkewY    : NaN, toSkewY    : NaN,\r
@@ -45,8 +44,8 @@ var X_NODE_ANIME_RESET = 1,
                scaleY   : 1,   fromScaleY   : 1,   toScaleY   : 1,\r
                alpha    : NaN,\r
                scrollX  : NaN, fromScrollX  : NaN, toScrollX  : NaN,\r
-               scrollY  : NaN, fromScrollY  : NaN, toScrollY  : NaN,\r
-               doScroll : false//,\r
+               scrollY  : NaN, fromScrollY  : NaN, toScrollY  : NaN //,\r
+               //doScroll : false//,\r
                //duration : 0\r
                //phase, lazyRelease, easing, follower, releaseNow, inited, progress doScroll, fallbackKind\r
                // fromTime, toTime\r
@@ -107,12 +106,6 @@ function X_Node_animate( obj ){
                a = this[ '_css' ] && parseFloat( this[ '_css' ].opacity );\r
                if( 0 <= a ) obj.alpha = a;\r
        };\r
-       \r
-       if( 0 <= duration && X_Type_isFinite( duration ) ){\r
-               obj.duration  = duration;\r
-       };\r
-\r
-       obj.easing = X_Type_isFunction( easing ) ? easing : X_NodeAnime_ease[ easing ] || X_NodeAnime_ease[ 'circular' ];\r
                \r
 // form :\r
        obj.fromX       = obj.x       = X_NodeAnime_getFinite( from[ 'x' ],       obj.x );\r
@@ -137,19 +130,20 @@ function X_Node_animate( obj ){
        obj.toScrollX                 = X_NodeAnime_getFinite( dest[ 'scrollX' ], obj.scrollX );\r
        obj.toScrollY                 = X_NodeAnime_getFinite( dest[ 'scrollY' ], obj.scrollY );\r
 \r
-       if( obj.toRotate && obj.rotate !== obj.rotate ) obj.rotate = 0;\r
-       if( obj.toSkewX  && obj.skewX  !== obj.skewX  ) obj.skewX  = 0;\r
-       if( obj.toSkewY  && obj.skewY  !== obj.skewY  ) obj.skewY  = 0;\r
+       if( X_Type_isFinite( obj.toX ) && X_Type_isNaN( obj.x ) ) obj.x = obj.fromX = 0;\r
+       if( X_Type_isFinite( obj.toY ) && X_Type_isNaN( obj.y ) ) obj.y = obj.fromY = 0;\r
+       \r
+       if( obj.toRotate && X_Type_isNaN( obj.rotate ) ) obj.rotate = obj.fromRotate = 0;\r
+       if( obj.toSkewX  && X_Type_isNaN( obj.skewX  ) ) obj.skewX  = obj.fromSkewX  = 0;\r
+       if( obj.toSkewY  && X_Type_isNaN( obj.skewY  ) ) obj.skewY  = obj.fromSkewY  = 0;\r
 \r
+       obj.duration    = 0 <= duration    && X_Type_isFinite( duration    ) ? duration    : 0;\r
        obj.lazyRelease = 0 <= lazyRelease && X_Type_isFinite( lazyRelease ) ? lazyRelease : 0;\r
-       obj.inited    = false;\r
-       obj.doScroll  = 0 <= obj.toScrollX || 0 <= obj.toScrollY;\r
-       obj.transform = false;\r
-       obj.fallback  = 0;\r
-       \r
-       if( obj.fromX === obj.fromX || obj.fromY === obj.fromY ){\r
-               obj.transform = !!X_NodeAnime_hasTransform;\r
-       };\r
+       obj.easing      = X_Type_isFunction( easing ) ? easing : X_NodeAnime_ease[ easing ] || X_NodeAnime_ease[ 'circular' ];\r
+       obj.inited      = false;\r
+       obj.transform   = ( X_Type_isFinite( obj.x ) || X_Type_isFinite( obj.y ) || obj.lazyRelease ) && X_NodeAnime_hasTransform;\r
+       obj.doScroll    = 0 <= obj.toScrollX || 0 <= obj.toScrollY;\r
+       obj.fallback    = 0;\r
        \r
        // scale\r
        if( obj.toScaleX !== 1 && obj.fromScaleX !== 1 && obj.toScaleY !== 1 && obj.fromScaleY !== 1 ){\r
@@ -173,7 +167,7 @@ function X_Node_animate( obj ){
        };\r
 \r
        // rotate, skew\r
-       if( obj.toRotate === obj.toRotate || obj.toSkewX === obj.toSkewX || obj.toSkewY === obj.toSkewY ){\r
+       if( X_Type_isFinite( obj.rotate ) || X_Type_isFinite( obj.skewX ) || X_Type_isFinite( obj.skewY ) ){\r
                if( X_NodeAnime_hasTransform ){\r
                        obj.transform = true;\r
                } else\r
@@ -341,8 +335,8 @@ function X_NodeAnime_detectWaitAnimation( xnode, duration, isTest ){
        //           -> いない、アニメーションが可能\r
        for( i = 0; _xnode = list[ i ]; ++i ){\r
                if( _xnode === xnode ) break;\r
-\r
-               if( 6 <= _xnode[ '_anime' ].phase ){\r
+               obj = _xnode[ '_anime' ];\r
+               if( 6 <= obj.phase ){\r
                        if( xnode[ 'contains' ]( _xnode ) || _xnode[ 'contains' ]( xnode ) ){\r
                                return isTest ? 3 : _xnode;\r
                        };\r
@@ -511,6 +505,8 @@ function X_NodeAnime_updatePosition( xnode, obj, ratio, useGPU ){
                scaleX = obj.scaleX = obj.toScaleX;\r
                scaleY = obj.scaleY = obj.toScaleY;\r
                alpha  = obj.alpha  = obj.toAlpha;\r
+               obj.scrollX = obj.toScrollX;\r
+               obj.scrollY = obj.toScrollY;\r
        } else {\r
                x      = obj.x;\r
                y      = obj.y;\r
@@ -554,7 +550,7 @@ function X_NodeAnime_updatePosition( xnode, obj, ratio, useGPU ){
                };              \r
        } else\r
        if( obj.fallback === 16 ){\r
-               xnode[ 'css' ]( 'dxtransform', [ x || 0, y || 0, rotate || 0, skewX || 0, skewY || 0, scaleX, scaleY ] );\r
+               xnode[ 'css' ]( 'dxtransform', [ x | 0, y | 0, rotate || 0, skewX || 0, skewY || 0, scaleX, scaleY ] );\r
        } else {\r
                x === x && xnode[ 'css' ]( 'left', ( x | 0 ) + 'px' );\r
                y === y && xnode[ 'css' ]( 'top',  ( y | 0 ) + 'px' );\r
@@ -572,6 +568,13 @@ function X_NodeAnime_updatePosition( xnode, obj, ratio, useGPU ){
                };\r
        };\r
        \r
+       if( obj.doScroll && xnode[ '_rawObject' ] ){\r
+               console.log( 'ok ' + ratio );\r
+                                       xnode[ '_rawObject' ].scrollLeft = obj.scrollX | 0;\r
+                                       xnode[ '_rawObject' ].scrollTop  = obj.scrollY | 0;\r
+               //X_Node_reserveUpdate();\r
+       };\r
+       \r
        alpha === alpha && xnode[ 'css' ]( 'opacity', alpha );\r
 };\r
 \r