微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

此代码如何工作?它使用jQuery创建一个随机的颜色生成器,但是我不懂数学

如何解决此代码如何工作?它使用jQuery创建一个随机的颜色生成器,但是我不懂数学

var colors = new Array(
[169,96,238],[255,51,61],[151,255,255],203,87],105,180],);

var step = 0;
//color table indices for: 
// current color left
// next color left
// current color right
// next color right
var colorIndices = [0,1,2,3];

//transition speed
var gradientSpeed = 0.0005;

function updateGradient()
{

if ( $===undefined ) return;

var c0_0 = colors[colorIndices[0]];
var c0_1 = colors[colorIndices[1]];
var c1_0 = colors[colorIndices[2]];
var c1_1 = colors[colorIndices[3]];

var istep = 1 - step;
var r1 = Math.round(istep * c0_0[0] + step * c0_1[0]);
var g1 = Math.round(istep * c0_0[1] + step * c0_1[1]);
var b1 = Math.round(istep * c0_0[2] + step * c0_1[2]);
var color1 = "rgb("+r1+","+g1+","+b1+")";

var r2 = Math.round(istep * c1_0[0] + step * c1_1[0]);
var g2 = Math.round(istep * c1_0[1] + step * c1_1[1]);
var b2 = Math.round(istep * c1_0[2] + step * c1_1[2]);
var color2 = "rgb("+r2+","+g2+","+b2+")";

$('#gradient').css({
background: "-webkit-gradient(linear,left top,right top,from("+color1+"),to("+color2+"))"}).css({
 background: "-moz-linear-gradient(left,"+color1+" 0%,"+color2+" 100%)"});

step += gradientSpeed;
if ( step >= 1 )
{
 step %= 1;
 colorIndices[0] = colorIndices[1];
 colorIndices[2] = colorIndices[3];
 
 //pick two new target color indices
 //do not pick the same as the current one
 colorIndices[1] = ( colorIndices[1] + Math.floor( 1 + Math.random() * (colors.length - 1))) % colors.length;
 colorIndices[3] = ( colorIndices[3] + Math.floor( 1 + Math.random() * (colors.length - 1))) % colors.length;
 
}
}

setInterval(updateGradient,10);

据我所知:

  1. 获取充满RGB颜色的数组,然后使用函数updateGradient。
  2. 在此函数中,它会创建4个代表每种颜色的变量(不确定为什么为什么要使用colorIndices [0]访问数字0?

在这部分之后,我只是不懂数学,因为如果“ step”为0,它的目的是什么,为什么不让var r1 = c0_0 [0]等?

谢谢!

编辑: 我想我最重要的问题是,我可以简单地复制这段代码,然后使用addEventListener(“ load”,setInterval)将其附加到Box元素上吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?