javascript - 跟踪 Y 轴最终值并应用一些逻辑

标签 javascript processing.js

我在可汗学院玩处理js。我坚持应用我的逻辑,使用条件使水滴到达底部后从顶部开始。我只需要跟踪 Y 轴 端点并调用我的 setXYPositions() 即可应用重雨功能。

var xPositions = [];
var yPositions = [];

var setXYPositions = function(){

   for(var i = 0 ; i <= 400 ; i+=10 ){
    xPositions.push(i);
    yPositions.push(random(1,100));
   }
};

//call rain
setXYPositions();   

draw = function() {

    background(204, 247, 255);

    for (var i = 0; i < xPositions.length; i++) {
        noStroke();
        fill(random(2,255), random(2,255), random(2,255));
        ellipse(xPositions[i], yPositions[i], 10, 10);
        yPositions[i] += 5;

    }
};

最佳答案

如何知道 yPosition 索引何时到达草图区域的底部?当这种情况发生时,它有什么值(value)?

要找出这一点,请尝试仅使用一个 yPosition 而不是 40 个。打印出yPosition,并找出当它离开屏幕底部时它是什么。

换个 Angular 思考:看起来您正在使用默认大小 100x100,这意味着窗口的高度为 100 像素。如果窗口顶部的yPosition0,那么窗口底部的yPosition是多少?

希望这可以帮助您弄清楚窗口底部的 yPosition100。现在你知道了,当一个圆圈到达那个位置时你想做什么?您希望它重置到窗口顶部,对吗?那么,窗口顶部的 yPosition 是多少?我们已经说过它是零!

把它们放在一起,看起来像这样:

yPositions[i] += 5;
if(yPositions[i] > 100){
   yPositions[i] = 0;
}

如果更改窗口的大小(通过从 setup() 调用 size() 函数)会发生什么?我们必须更改 if 语句中的 100。但实际上,Processing 为我们提供了一个可以使用的 height 变量,让我们的生活变得更轻松!

yPositions[i] += 5;
if(yPositions[i] > height){
   yPositions[i] = 0;
}

现在,无论窗口大小如何,我们的代码都可以工作。

无耻的 self 推销:我写了一个涵盖动画和重置可用位置的教程here .

关于javascript - 跟踪 Y 轴最终值并应用一些逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39804013/

相关文章:

javascript - 如何添加 "doesn' t 触发“for..in”的新数组方法?

php - 脚本在 Ajax 返回值中不起作用

javascript - 如何将 PHP 变量传递给processing.js

javascript - 为什么有多个不带参数的对象方法?

javascript - processing.js 是实现这个想法的好选择吗?

javascript - onCopy 事件会帮助我修复脚上的弹孔吗?

javascript - 当我将鼠标放在按钮上时,如何检测按钮的颜色是否因为 CSS 或 JavaScript 事件而改变?

javascript - 解析从 Node 服务器 Spotify 返回的 json

javascript - 在javascript中使用Processing的loadTable

javascript - 从 OpenProcessing 下载时,Processing.js 草图闪烁