OSDN Git Service

Version 0.6.131, cleanup X.EventDispatcher.
[pettanr/clientJs.git] / 0.6.x / js / 02_dom / 10_XNodeAnime.js
index becf088..1d7a23e 100644 (file)
@@ -82,6 +82,8 @@ var X_Node_ANIMATIONS            = [],
  * TODO : rotate, ActiveX transform -> 位置補正のために size 情報が必要なので、commitUpdate 後に計算して適用\r
  * TODO : matrix\r
  * TODO : skew\r
+ * TODO : filter\r
+ * TODO 前回位置からの継続\r
  */\r
 Node.prototype.animate = function( start, dest, duration, easing, wait ){\r
        var isNew = !this._anime,\r
@@ -285,6 +287,7 @@ function X_Node_Anime_updateAnimation( xnode ){
                                transitionDelay          : '0s' // 0.001 にすると transitionend のタイミングが狂う、、、\r
                        });\r
                        \r
+                       console.log( '開始位置 ' + phase );\r
                        X_Node_Anime_updatePosition( xnode, obj.startX, obj.startY, obj.startA, phase === 8 );\r
                        \r
                        xnode.dispatch( { type : X.Event.ANIME_START, gpu : phase === 8 } );\r
@@ -297,12 +300,13 @@ function X_Node_Anime_updateAnimation( xnode ){
                                xnode.listenOnce( 'transitionend', X_Node_Anime_onTransitionEnd );\r
                        \r
                                xnode.css({\r
-                                       transitionProperty : X_Node_Anime_transitionProps + ',opacity,width,height', // X_Node_Anime_readyTransitionに移動??\r
+                                       transitionProperty : X_Node_Anime_transitionProps + ',opacity,width,height',\r
                                        transitionDuration : obj.duration + 'ms'\r
                                });\r
                                \r
+                               console.log( '修了位置 ' + phase );\r
                                X_Node_Anime_updatePosition( xnode, obj.destX, obj.destY, obj.destA, obj.gpuParent );\r
-                               obj.phase = 2;  \r
+                               obj.phase = 2;\r
                                break;\r
                        };\r
                        console.log( 'duration = 0 の場合、アニメーションの解除' );\r
@@ -322,7 +326,7 @@ function X_Node_Anime_updateAnimation( xnode ){
 \r
                case 10 :\r
                        // アニメーションは停止・GPUレイヤーは解除していない(再アニメーションに備えて待機)\r
-                       X_Node_Anime_clearTransition( xnode ); // TODO X_Node_Anime_releaseGPULayer に移動?\r
+                       //X_Node_Anime_clearTransition( xnode ); // TODO X_Node_Anime_releaseGPULayer に移動?\r
                        if( !obj.gpuTimerID ){\r
                                if( obj.wait ){\r
                                        obj.gpuTimerID = X.Timer.once( obj.wait, xnode, X_Node_Anime_releaseGPULayer );\r
@@ -423,6 +427,7 @@ function X_Node_Anime_releaseGPULayer(){
                console.log( '_anime無' );\r
                return;\r
        };\r
+       X_Node_Anime_clearTransition( this );\r
        X_Node_Anime_updatePosition( this, obj.destX, obj.destY, obj.destA, false );\r
        X_Node_ANIMATIONS.splice( X_Node_ANIMATIONS.indexOf( this ), 1 );\r
        delete obj.gpuTimerID;\r
@@ -441,7 +446,7 @@ function X_Node_Anime_clearTransition( xnode ){
        // 開始座標のセット(新規のみ)\r
        // アニメーション指定のセット(または解除)(対象のみ)\r
        // 目標座標のセット\r
-       //xnode.unlisten( 'transitionend', X_Node_Anime_onTransitionEnd );\r
+       xnode.unlisten( 'transitionend', X_Node_Anime_onTransitionEnd );\r
 \r
        xnode.css({\r
                //willChange               : '',\r
@@ -467,25 +472,27 @@ function X_Node_Anime_updatePosition( xnode, x, y, opacity, useGPU ){
                });\r
        };\r
 \r
-       if( useGPU ){\r
-               if( xnode._flags & X_Node_State.GPU_RELEASE_RESERVED ){\r
-                       xnode._flags &= X_Node_BitMask_RESET_GPU;\r
-                       xnode._flags |= X_Node_State.GPU_NOW;\r
-               } else\r
-               if( xnode._flags & X_Node_State.GPU_NOW === 0 ){\r
-                       xnode._flags &= X_Node_BitMask_RESET_GPU;\r
-                       xnode._flags |= X_Node_State.GPU_RESERVED;                      \r
-               };\r
-       } else {\r
-               if( xnode._flags & X_Node_State.GPU_NOW ){\r
-                       xnode._flags &= X_Node_BitMask_RESET_GPU;\r
-                       xnode._flags |= X_Node_State.GPU_RELEASE_RESERVED;                      \r
-               } else\r
-               if( xnode._flags & X_Node_State.GPU_RESERVED ){\r
-                       xnode._flags &= X_Node_BitMask_RESET_GPU;\r
-               };\r
+       if( X_Node_Anime_translateZ ){\r
+               if( useGPU ){\r
+                       if( xnode._flags & X_Node_State.GPU_RELEASE_RESERVED ){\r
+                               xnode._flags &= X_Node_BitMask_RESET_GPU;\r
+                               xnode._flags |= X_Node_State.GPU_NOW;\r
+                       } else\r
+                       if( xnode._flags & X_Node_State.GPU_NOW ){\r
+                       } else {\r
+                               xnode._flags &= X_Node_BitMask_RESET_GPU;\r
+                               xnode._flags |= X_Node_State.GPU_RESERVED;\r
+                       };\r
+               } else {\r
+                       if( xnode._flags & X_Node_State.GPU_NOW ){\r
+                               xnode._flags &= X_Node_BitMask_RESET_GPU;\r
+                               xnode._flags |= X_Node_State.GPU_RELEASE_RESERVED;                      \r
+                       } else\r
+                       if( xnode._flags & X_Node_State.GPU_RESERVED ){\r
+                               xnode._flags &= X_Node_BitMask_RESET_GPU;\r
+                       };\r
+               };              \r
        };\r
-\r
 };\r
 \r
 function X_Node_Anime_updateAnimationsNoTransition(){\r