我正在尝试创建大量的int值并尝试将它们添加到空的int数组中,但它不起作用。我已按原样添加了我的代码。如果你只是插上它就可以工作。所有有问题的部分都被注释掉了。
我真正想做的就是让它使用我希望它使用的完美颜色。所以创建了一个代表颜色的数字列表,我需要将这些颜色添加到一个数组中,这样我就可以用填充来初始化它们。所以问题是如何将所有这些值添加到空int数组中。
int rotationCount = 0;
int translateX ;
int translateY ;
int currentTime = 0;
int circlesOrLines ;
int timeLimit ;
int r;
int g;
int b;
//int[] values = new values [];
int maxValue = 226;
int minValue = 75;
int timeIndex = 0;
void setup () {
size(500, 700);
r = 226;
g = 226;
b = 75;
smooth();
background(0);
rectMode(CENTER);
frameRate (10);
noStroke();
fill(r, g, b, 30);
translateX = width/2;
translateY = height/2;
timeLimit = 10000;
circlesOrLines = 0;
currentTime = millis();
//generateColor ();
}
void draw () {
background(80);
/*
timeIndex++;
if (timeIndex >= values.length){
timeIndex = 0;
}
fill(values [timeIndex] , values [timeIndex + 1], values [timeIndex + 2], 30);
*/
fill(r, g, b, 30);
int passedTime = millis() - currentTime;
println (" the passed time is " + passedTime);
translate(translateX % width, translateY % height);
translateX += 3 % width;
translateY += 3 % height;
rotationCount += (PI/2008);
if (passedTime < timeLimit) {
makeCircles ();
}
else {
if (passedTime >=20000)
{
passedTime = 0;
currentTime = millis();
}
makeLines ();
}
}
void makeCircles () {
for (int i = 0; i < 25; i++) {
rotate (rotationCount);
ellipse(i+7, i % width, 100, height/2);
}
}
void makeLines () {
for (int i = 0; i < 25; i++) {
rotate (rotationCount);
rect(i+7, i % width, 100, height/2);
}
}
/*
void generateColor () {
for (g=g; g>minValue; g--)
{
values.push (r,g,b);
}
for (r=r; r>minValue; r--)
{
values.push (r,g,b);
}
for (b=b; b<maxValue; b++)
{
values.push (r,g,b);
}
for (g=g; g<maxValue; g++)
{
values.push (r,g,b);
}
for (r=r; r<maxValue; r++)
{
values.push (r,g,b);
}
for (b=b; b>minValue; b--)
{
values.push (r,g,b);
}
}
*/
EDIT --------
JAVASCRIPT MODE:
答案 0 :(得分:1)
我已经粘贴了一个有效的解决方案。您的代码中存在一些错误。
首先,确保声明您使用的内容。您在代码中使用values
但是您已经删除了声明。 Javascript将允许调用null对象,这就是你在对象上调用.push()
并且它正在编译但不能正常工作的原因。
其次,将颜色保留为color
个对象,并使用ArrayList存储它们。它更易于管理,并且允许您在Java和Javascript版本的处理器之间移动而不会出现问题(Java中的数组上不存在.push()方法)。
最后,当您通过调用fill()
查找颜色时,您使用的是timeIndex,它与颜色数组的长度不同,从而导致异常。我已经更改了查找以使用frameCount和ArrayList长度的模数来保持它在颜色中振荡,但也防止了越界错误。
结果看起来非常好。做得好。
int rotationCount = 0;
int translateX ;
int translateY ;
int currentTime = 0;
int circlesOrLines ;
int timeLimit ;
int r;
int g;
int b;
ArrayList values;
int maxValue = 226;
int minValue = 75;
int timeIndex = 0;
void setup () {
size(500, 700);
r = 226;
g = 226;
b = 75;
smooth();
background(0);
rectMode(CENTER);
frameRate (10);
noStroke();
fill(r, g, b, 30);
translateX = width/2;
translateY = height/2;
timeLimit = 10000;
circlesOrLines = 0;
currentTime = millis();
values = new ArrayList();
generateColor ();
}
void draw () {
background(80);
fill( values.get( frameCount % values.size()));
int passedTime = millis() - currentTime;
translate(translateX % width, translateY % height);
translateX += 3 % width;
translateY += 3 % height;
rotationCount += (PI/2008);
if (passedTime < timeLimit) {
makeCircles ();
}
else {
if (passedTime >=20000)
{
passedTime = 0;
currentTime = millis();
}
makeLines ();
}
}
void makeCircles () {
for (int i = 0; i < 25; i++) {
rotate (rotationCount);
ellipse(i+7, i % width, 100, height/2);
}
}
void makeLines () {
for (int i = 0; i < 25; i++) {
rotate (rotationCount);
rect(i+7, i % width, 100, height/2);
}
}
void generateColor ()
{
for (g=g; g>minValue; g--)
{
values.add (color(r,g,b,30));
}
for (r=r; r>minValue; r--)
{
values.add (color(r,g,b,30));
}
for (b=b; b<maxValue; b++)
{
values.add (color(r,g,b,30));
}
for (g=g; g<maxValue; g++)
{
values.add (color(r,g,b,30));
}
for (r=r; r<maxValue; r++)
{
values.add (color(r,g,b,30));
}
for (b=b; b>minValue; b--)
{
values.add (color(r,g,b,30));
}
}