第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

p5.j??s 使用 setInterval、array.push()、for 循環(huán)創(chuàng)建動畫時出現(xiàn)

p5.j??s 使用 setInterval、array.push()、for 循環(huán)創(chuàng)建動畫時出現(xiàn)

一只萌萌小番薯 2022-01-07 21:15:16
使用setInterval, array.push(), for 循環(huán),我希望每3 秒出現(xiàn)一個氣泡,直到數(shù)組氣泡的長度變?yōu)?0。但是,當我執(zhí)行我的代碼時,一次總共出現(xiàn)了10個氣泡,并且console.log(array.length)表明長度正在增長,盡管我將它設(shè)置為小于10。我認為我的代碼排列方式有問題,有人可以幫忙嗎?let bubbles = [];var n = 10;function setup() {    createCanvas(600, 400);}function addBubbles() {    for (let i = 0; i < n; i++) {        let x = random(50, 550);        let y = random(50, 350);        let r = random(10, 50);        let b = new Bubble(x, y, r);        setInterval(bubbles.push(b), 3000);    }}function draw() {    background(0);    addBubbles();    for (let i = 0; i < n; i++) {      bubbles[i].show();      bubbles[i].move();    }}class Bubble {    constructor(_x, _y, _r, _c) {        this.x = _x;        this.y = _y;        this.r = _r;        this.c = _c;    }    move() {        this.x = this.x + random(-5, 5);        this.y = this.y + random(-5, 5);    }    show() {        stroke(255);        noFill();        strokeWeight(4);        ellipse(this.x, this.y, this.r * 2);    }}<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.9.0/p5.js"></script>
查看完整描述

2 回答

?
素胚勾勒不出你

TA貢獻1827條經(jīng)驗 獲得超9個贊

我可以看到你已經(jīng)準確地實現(xiàn)了 setInterval() 方法,并且根據(jù)你組織代碼的方式,你得到的結(jié)果是相當公平的,因為你的 addBubbles() 方法是在 FOR 循環(huán)有機會執(zhí)行之前執(zhí)行的開始,這就是為什么你會一次得到 10 個氣泡。我建議你像這樣在循環(huán)中拋出 addBubbles() 方法:


 for (let i = 0; i < n; i++) {

    addBubbles();

  }

這樣,您的 addBubbles() 方法將隨著增量每 3000 毫秒執(zhí)行一次。


查看完整回答
反對 回復 2022-01-07
?
慕慕森

TA貢獻1856條經(jīng)驗 獲得超17個贊

您的代碼中存在一些問題。


問題 1: 每次繪制畫布時,都會開始 10 個間隔。這些間隔中的每一個都將每 3 秒運行一次函數(shù)。這會很快(并且成倍地)給你很多泡沫。


要每 3 秒添加 1 個氣泡,您只需啟動 1 個間隔。您可以在您的setup函數(shù)中執(zhí)行此操作,因為它只被調(diào)用一次。


您可以在addBubble函數(shù)中添加一個檢查,一旦您有一定數(shù)量的氣泡,它將取消間隔。


問題 2: 在調(diào)用setInterval().


您已bubbles.push(b)作為每 3 秒運行一次的函數(shù)傳遞。bubbles.push(b)不返回函數(shù)類型。


bubbles.push我們將傳遞一個向數(shù)組添加氣泡的函數(shù),而不是傳遞 的返回值。


問題 3:n在繪制畫布時,您 只需要迭代(10) 個氣泡。相反,您需要遍歷所有這些。


let bubbles = [];

let maxBubbles = 10;

let interval;


funtion setup() {

  createCanvas(600, 400);

  interval = setInterval(addBubble, 3000);

}


function addBubble() {

  let x = random(50, 550);

  let y = random(50, 350);

  let r = random(10, 50);

  let b = new Bubble(x, y, r);

  bubbles.push(b);


  if (bubbles.length >= maxBubbles) {

    clearInterval(interval);

  }

}


function draw() {

  background(0);


  for (let bubble of bubbles) {

    bubble.show();

    bubble.move();

  }

}


查看完整回答
反對 回復 2022-01-07
  • 2 回答
  • 0 關(guān)注
  • 204 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號