方法不适用?

时间:2014-01-18 04:14:58

标签: processing

当我向owl添加参数“Color”时,它表示方法owl不适用? 我想让猫头鹰变成任意颜色的随机颜色吗?这是Reas和Fry的处理书的练习。

void setup ( ) {
  size(700,500);
  background(200);
  smooth( );
  frameRate(10);
}

void pick () {
  color (random(255),random(255),random(255));
}

void draw ( ) {
  owl(35,100);
}

void owl (int x, int y, color z) {

  pick ();

  stroke(0) ;

  strokeWeight(70) ;

  line(x, -35+y, x, -65+y) ;         // body

  noStroke() ;

  fill(255) ;

  ellipse(-17.5+x, -65+y, 35, 35) ; // left eye dome

  ellipse( 17.5+x, -65+y, 35, 35) ; // right eye dome

  arc(0+x, -65+y, 70, 70, 0, PI) ;

  fill(0) ;

  ellipse(-14+x, -65+y, 8, 8) ;      // left eye

  ellipse( 14+x, -65+y, 8, 8) ;      // right eye

  quad(0+x, -58+y, 4+x, -51+y, x, -44+y, -4+x, -51+y) ;  
}

2 个答案:

答案 0 :(得分:2)

v.k。实际上是对的,虽然他没有告诉你为什么颜色不会改变。问题当然是你用两个参数调用owl,而它需要三个。据我所知,你想用pick()方法选择随机颜色,因此你不需要第三个参数。

void owl (int x, int y, color z) {

应该是

void owl (int x, int y) {

此外,您需要以正确创建的随机颜色填充(或描边)事物。问题是,只要你没有在fill()stroke()方法中传递它,它就不会为任何颜色着色......所以你需要在猫头鹰()中以某种方式获得那种颜色因此,您可以从pick()命令返回它,并像这样使用它:

color pick () {
  return color (random(255),random(255),random(255));
}

并在owl方法中检索它并将其存储在变量中以便您可以使用它:

color z = pick();

然后改变你改变的眼睛的颜色

fill(0);

为:

fill(z);

以下是最终的代码,以防我感到困惑:

void setup ( ) {
  size(700,500);
  background(200);
  smooth( );
  frameRate(10);
}

color pick () {
  return color (random(255),random(255),random(255));
}

void draw ( ) {
  owl(35,100);
}

void owl (int x, int y) {
  color z = pick();
  stroke(0) ;
  strokeWeight(70) ;
  line(x, -35+y, x, -65+y) ;         // body
  noStroke() ;
  fill(255) ;
  ellipse(-17.5+x, -65+y, 35, 35) ; // left eye dome
  ellipse( 17.5+x, -65+y, 35, 35) ; // right eye dome
  arc(0+x, -65+y, 70, 70, 0, PI) ;
  fill(z) ;
  ellipse(-14+x, -65+y, 8, 8) ;      // left eye
  ellipse( 14+x, -65+y, 8, 8) ;      // right eye
  quad(0+x, -58+y, 4+x, -51+y, x, -44+y, -4+x, -51+y) ;  
}

答案 1 :(得分:1)

color是颜色的处理数据类型。它知道colorMode()。问题很简单,你自己的方法需要3个参数void owl (int x, int y, color z) {...,你用2 owl(35,100)调用它。如果你说:

owl(35,100, color(random(255),random(255),)random(255));

它会起作用。