瀏覽代碼

Merge pull request #6787 from Cy-Bo-Rg/dev

mods to support blacklisted android devices
Ricardo Cabello 10 年之前
父節點
當前提交
008467e3fd
共有 2 個文件被更改,包括 39 次插入1 次删除
  1. 1 1
      examples/webgl_nearestneighbour.html
  2. 38 0
      src/Three.js

+ 1 - 1
examples/webgl_nearestneighbour.html

@@ -70,7 +70,7 @@
 		<script>		
 		
 			var camera, scene, renderer;
-			var geometry, material, mesh;
+			var geometry, mesh;
 			var controls;
 
 			var objects = [];

+ 38 - 0
src/Three.js

@@ -3,7 +3,45 @@
  */
 
 var THREE = { REVISION: '72dev' };
+// I've added these lines again because it fixes android support for stock browser on many blacklisted devices
+// it is to be considered a temporary workaroud until the real cause is found
+// http://paulirish.com/2011/requestanimationframe-for-smart-animating/
+// http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating
+// requestAnimationFrame polyfill by Erik Möller
+// fixes from Paul Irish and Tino Zijdel
+// using 'self' instead of 'window' for compatibility with both NodeJS and IE10.
+( function () {
 
+	var lastTime = 0;
+	var vendors = [ 'ms', 'moz', 'webkit', 'o' ];
+
+	for ( var x = 0; x < vendors.length && !self.requestAnimationFrame; ++ x ) {
+
+		self.requestAnimationFrame = self[ vendors[ x ] + 'RequestAnimationFrame' ];
+		self.cancelAnimationFrame = self[ vendors[ x ] + 'CancelAnimationFrame' ] || self[ vendors[ x ] + 'CancelRequestAnimationFrame' ];
+
+	}
+
+	if ( self.requestAnimationFrame === undefined && self['setTimeout'] !== undefined ) {
+
+		self.requestAnimationFrame = function ( callback ) {
+
+			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 ) };
+
+	}
+
+}() );
 // browserify support
 
 if ( typeof module === 'object' ) {