\r
if( sys.indexOf( 'iP' ) === 0 ){\r
\r
- v = dua.split( 'OS ' )[ 1 ].split( '_' );\r
+ v = dav.split( 'OS ' )[ 1 ].split( '_' );\r
i = window.devicePixelRatio === 1;\r
/**\r
* @alias X.UA.iOSMajor\r
* @alias X.UA.iOS\r
* @type {number}\r
*/\r
- X_UA[ 'iOS' ] = X_UA[ 'iOSMajor' ] + X_UA[ 'iOSMinor' ] / 10;\r
+ X_UA[ 'iOS' ] = X_UA[ 'iOSMajor' ] + X_UA[ 'iOSMinor' ] / 10;\r
\r
// 4:3 model\r
v = screen.width === screen.height * 1.5 || screen.width * 1.5 === screen.height;\r
};\r
//alert( 'iPod touch ' + ( X_UA[ 'iPod_3' ] ? '3以下' : X_UA[ 'iPod_4' ] ? '4以下' : '5以上' ) );\r
};\r
+ // TODO iPhone Simulator\r
\r
console.log( '>> iOS : ' + X_UA[ 'iOS' ] );\r
} else\r
X_UA[ 'MacIE' ] = true;\r
};\r
\r
- if( 0 < dua.toLowerCase().indexOf( 'iemobile' ) || X_UA[ 'WinCE' ] ){\r
+ if( 0 < dua.indexOf( 'IEMobile' ) || X_UA[ 'WinCE' ] ){\r
/**\r
* @alias X.UA.IEMobile\r
* @type {boolean}\r
X_UA[ 'IEMobile' ] = true;\r
};\r
\r
- if( 0 < dua.toLowerCase().indexOf( 'windows phone' ) || 0 < dav.indexOf( 'ZuneWP' ) ){\r
+ if( 0 < dua.indexOf( 'Windows Phone' ) || 0 < dav.indexOf( 'ZuneWP' ) ){\r
/**\r
* @alias X.UA.WinPhone\r
* @type {boolean}\r
\r
X_NodeAnime_hasTransform = !!X_Node_CSS_VENDER_PREFIX[ 'transform' ],\r
\r
- X_NodeAnime_hasDXTransform = 5.5 <= X_UA[ 'IE' ] && X_UA[ 'IE' ] < 9 && X_UA[ 'ActiveX' ],\r
+ X_NodeAnime_hasDXTransform = 5.5 <= X_UA[ 'IE' ] && X_UA[ 'IE' ] < 9 && X_UA[ 'ActiveX' ], // IEHost が 11 の場合不可\r
\r
/* Opera mobile で translateZ(0) が有効だと XY が 0 0 になる */\r
/* GPUレイヤーにいる間に要素のコンテンツを変更をすると transitionend が動かなくなるっぽい Mac safari と firefox */\r
X_NodeAnime_translateZ = X_Node_CSS_VENDER_PREFIX[ 'perspective' ] && !X_UA[ 'OperaMobile' ] && !X_UA[ 'OperaTablet' ] ? ' translateZ(0)' : '',\r
\r
- X_NodeAnime_transitionProps = X_NodeAnime_hasTransform ? X_Node_CSS_VENDER_PREFIX[ 'transform' ] : 'left,top';\r
-\r
/*\r
* phase:\r
* 0: アニメーション無\r
* 7: アニメーション中\r
*/\r
\r
-var X_NODE_ANIME_RESET = 1,\r
+ X_NODE_ANIME_RESET = 1,\r
X_NODE_ANIME_STAY_GPU = 2,\r
\r
X_NodeAnime_DEFAULT = {\r
scrollY : NaN, fromScrollY : NaN, toScrollY : NaN //,\r
//doScroll : false//,\r
//duration : 0\r
- //phase, lazyRelease, easing, follower, releaseNow, inited, progress doScroll, fallbackKind\r
+ //phase, lazyRelease, easing, follower, releaseNow, inited, progress, fallback\r
// fromTime, toTime\r
};\r
\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
+ obj.altX = fallback & 8 ? 'right' : 'left'; \r
+ obj.altY = fallback & 16 ? 'bottom' : 'top';\r
\r
// scale\r
if( obj.toScaleX !== 1 && obj.fromScaleX !== 1 && obj.toScaleY !== 1 && obj.fromScaleY !== 1 ){\r
if( X_NodeAnime_hasTransform ){\r
obj.transform = true;\r
} else\r
- if( X_NodeAnime_hasDXTransform && ( fallback & 16 ) ){ // DX Transform\r
- obj.fallback = 16;\r
+ if( X_NodeAnime_hasDXTransform && ( fallback & 32 ) ){ // DX Transform\r
+ obj.fallback = 32;\r
} else\r
if( ( fallback & 4 ) && sameRate ){ // zoom\r
obj.fallback = 4;\r
if( X_NodeAnime_hasTransform ){\r
obj.transform = true;\r
} else\r
- if( X_NodeAnime_hasDXTransform && ( fallback & 16 ) ){ // DX Transform\r
- obj.fallback = 16;\r
+ if( X_NodeAnime_hasDXTransform && ( fallback & 32 ) ){ // DX Transform\r
+ obj.fallback = 32;\r
};\r
};\r
\r
}; \r
}; \r
} else\r
- if( obj.fallback === 16 ){\r
- xnode[ 'css' ]( 'dxtransform', [ x | 0, y | 0, rotate || 0, skewX || 0, skewY || 0, scaleX, scaleY ] );\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' ]( 'left', ( x | 0 ) + 'px' );\r
- y === y && xnode[ 'css' ]( 'top', ( y | 0 ) + 'px' );\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
\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
+ xnode[ '_rawObject' ].scrollLeft = obj.scrollX | 0;\r
+ xnode[ '_rawObject' ].scrollTop = obj.scrollY | 0;\r
//X_Node_reserveUpdate();\r
};\r
\r