使用陀螺仪使用 Javascript 或 jQuery 循环所有 RGB 颜色

Using the gyroscope to cycle though all RGB colours using Javascript or jQuery

我需要使用陀螺仪让一个元素(文本或背景)循环显示所有可用的 RGB 颜色。

我设法找到了一些与使用设备方向生成值相关的文章。

http://matthewlehner.net/ios-7-style-parallax-background-based-on-device-orientation/

我将如何使用此数据循环显示 RGB 颜色值并将其显示在元素上,以便它随着 phone 旋转而改变颜色?

非常感谢任何帮助或指导。 谢谢

据我了解,无法在当前环境中测试陀螺仪事件,您要做的是将 alphabetagamma 映射到 RGB 相应。为此,您应该将这些值的范围映射到 RGB 范围 [0,255]。使用通用 Map Range 函数和您 link 中提到的范围,我构建了一个快速演示,您可以在下面看到它。我还提供了测试样品,看看它是否有效,看起来还不错:

// Map range of numbers to another range of numbers
var mapRange = function(from, to, s) {
  return to[0] + (s - from[0]) * (to[1] - to[0]) / (from[1] - from[0]);
};
// Your event listener and logic 
window.addEventListener('deviceorientation', function(eventData) {
  // The compass direction - will return a value between 0 and 360
  var R = Math.round(mapRange([0, 360], [0, 255], eventData.alpha));

  // Side to side value - will return a value between -180 and 180
  var G = Math.round(mapRange([-180, 180], [0, 255], eventData.beta));

  // Front to back value - will return a value between -90 and 90
  var B = Math.round(mapRange([-90, 90], [0, 255], eventData.gamma));
  
  console.log(R, G, B); // Sample output, deal with these however you like
});

// Test 1
var eventDataSample1 = {
  alpha: 125,
  beta: -65,
  gamma: -2
}
var R = Math.round(mapRange([0, 360], [0, 255], eventDataSample1.alpha));
var G = Math.round(mapRange([-180, 180], [0, 255], eventDataSample1.beta));
var B = Math.round(mapRange([-90, 90], [0, 255], eventDataSample1.gamma));
console.log(R, G, B);

// Test 2
var eventDataSample2 = {
  alpha: 12,
  beta: 66,
  gamma: 17
}
var R = Math.round(mapRange([0, 360], [0, 255], eventDataSample2.alpha));
var G = Math.round(mapRange([-180, 180], [0, 255], eventDataSample2.beta));
var B = Math.round(mapRange([-90, 90], [0, 255], eventDataSample2.gamma));
console.log(R, G, B);

附带说明,您可以根据需要将这三个值映射到 HSL 值而不是 RGB,这很可能会产生更好的结果。