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

按下鼠标时随机化图像 - 处理

如何解决按下鼠标时随机化图像 - 处理

  • 我正在尝试制作一个网格,其中每个单元格都包含我的数据文件夹中的一张随机图像。

  • 到目前为止,我已经在每个单元格中实现了不同的图像,但它不会随机

  • 它不是从文件夹中的 600+随机选择一个,而是将每个图像按 1 to 27 的顺序放置。

  • 除此之外,我希望它在每次我用鼠标单击时随机化,而不是在它关闭并再次播放时随机化。代码

    PImage img[];
    int nPics;
     
    int w;
    int h;
    
    
    int rand;
    
     
    void setup(){
      
      size(1500,500);
      nPics=27;
      img = new PImage[nPics];
    
      w=width/9;  
      h=height/3; 
    
    for (int i = 0; i <nPics; i++) {
        img[i] = loadImage("img_" +nf(i,3)+ ".jpg");
        imageMode(CORNERS);
      }

      //rand = int(random(0,687));
      //img[0]=loadImage("img_" + nf(rand,3)+ ".jpg");

    }
     
    void draw(){
    background(0);
      for(int i=0;i<nPics;i=i+3){  
         int col = i/3;
         for(int row=0;row<3;row++)
           image(img[i+row],col*w,row*h,(col+1)*w,(row+1)*h);
      }
      
    }

解决方法

加载图片时,您使用的是 i 而不是 rand。为了在单击鼠标时随机化图像,您可以使用 mousePressed() 将不同的图像重新加载到数组中。

这应该有效:

PImage img[];
int nPics;

int w,h;

void loadImages(){
  for (int i = 0; i < nPics; i++) {
    img[i] = loadImage("img_"+ nf(int(random(0,687)),3) + ".jpg");
    imageMode(CORNERS);
  }
}

void setup() {
  size(1500,500);
  nPics=27;
  img = new PImage[nPics];

  w=width/9;  
  h=height/3; 

  loadImages();
}

void mousePressed(){
  loadImages();
}

void draw() {
  background(0);
  for (int i=0; i<nPics; i=i+3) {  
    int col = i/3;
    for (int row=0; row<3; row++)
      image(img[i+row],col*w,row*h,(col+1)*w,(row+1)*h);
  }
}

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