فهرست منبع

Three: Polyfill requestAnimationFrame only when needed.

Mr.doob 10 سال پیش
والد
کامیت
2f519f1153
1فایلهای تغییر یافته به همراه29 افزوده شده و 23 حذف شده
  1. 29 23
      src/Three.js

+ 29 - 23
src/Three.js

@@ -19,46 +19,52 @@ if ( typeof define === 'function' && define.amd ) {
 
 // polyfills
 
-( function () {
+if ( self.requestAnimationFrame === undefined || self.cancelAnimationFrame === undefined ) {
 
-	var lastTime = 0;
-	var vendors = [ 'ms', 'moz', 'webkit', 'o' ];
+  // Missing in Android stock browser.
 
-	for ( var x = 0; x < vendors.length && ! self.requestAnimationFrame; ++ x ) {
+  ( function () {
 
-		self.requestAnimationFrame = self[ vendors[ x ] + 'RequestAnimationFrame' ];
-		self.cancelAnimationFrame = self[ vendors[ x ] + 'CancelAnimationFrame' ] || self[ vendors[ x ] + 'CancelRequestAnimationFrame' ];
+  	var lastTime = 0;
+  	var vendors = [ 'ms', 'moz', 'webkit', 'o' ];
 
-	}
+  	for ( var x = 0; x < vendors.length && ! self.requestAnimationFrame; ++ x ) {
 
-	if ( self.requestAnimationFrame === undefined && self.setTimeout !== undefined ) {
+  		self.requestAnimationFrame = self[ vendors[ x ] + 'RequestAnimationFrame' ];
+  		self.cancelAnimationFrame = self[ vendors[ x ] + 'CancelAnimationFrame' ] || self[ vendors[ x ] + 'CancelRequestAnimationFrame' ];
 
-		self.requestAnimationFrame = function ( callback ) {
+  	}
 
-			var currTime = Date.now(), timeToCall = Math.max( 0, 16 - ( currTime - lastTime ) );
-			var id = self.setTimeout( function () {
+  	if ( self.requestAnimationFrame === undefined && self.setTimeout !== undefined ) {
 
-				callback( currTime + timeToCall );
+  		self.requestAnimationFrame = function ( callback ) {
 
-			}, timeToCall );
-			lastTime = currTime + timeToCall;
-			return id;
+  			var currTime = Date.now(), timeToCall = Math.max( 0, 16 - ( currTime - lastTime ) );
+  			var id = self.setTimeout( function () {
 
-		};
+  				callback( currTime + timeToCall );
 
-	}
+  			}, timeToCall );
+  			lastTime = currTime + timeToCall;
+  			return id;
 
-	if ( self.cancelAnimationFrame === undefined && self.clearTimeout !== undefined ) {
+  		};
 
-		self.cancelAnimationFrame = function ( id ) {
+  	}
 
-			self.clearTimeout( id );
+  	if ( self.cancelAnimationFrame === undefined && self.clearTimeout !== undefined ) {
 
-		};
+  		self.cancelAnimationFrame = function ( id ) {
 
-	}
+  			self.clearTimeout( id );
 
-}() );
+  		};
+
+  	}
+
+  }() );
+
+}
 
 if ( Math.sign === undefined ) {