p5.j​​s中的setup()函数如何工作?

时间:2019-07-09 19:56:45

标签: javascript php html p5.js

我的HTML代码中有

<a href="#..." onclick="my_function()" id="id-ea">Click me!</a>

一旦“点击我!”单击,调用my_function(),在该程序中,我还具有setup()函数。调用my_function()后,执行顺序是什么?

是my_function()后跟setup()吗?还是setup()后跟my_function()?

var global_variable;
function setup(){
    // setup using global_variable
}

function my_function(){
    // update global_variable
}

3 个答案:

答案 0 :(得分:1)

为什么不尝试一下,看看会发生什么?几个打印语句将为您提供答案:

function setup(){
    console.log('setup');
}

function my_function(){
    console.log('my_function');
}

但是通常我会说setup()将首先被调用,因为P5.js在加载时会自动调用它。您的my_function函数仅在用户加载页面很久之后单击链接时才会调用。

但是您不必相信我。运行它,看看会发生什么! :)

答案 1 :(得分:1)

  1. setup()是一种处理功能,在程序启动时仅执行一次,应将其用于程序初始化,例如屏幕大小,加载媒体等。每个程序只能有一个setup()函数,并且在初次执行后不应再次调用它。
  2. my_function()是由您创建的函数,仅当您在代码中的某处调用它时才会调用。
  3. 订单将因此以setup() -> my_function()的形式出现。

答案 2 :(得分:0)

JavaScript是一种单线程语言,这意味着它在给定的时间只会执行一个代码块(函数)。 JavaScript使用堆栈来执行代码。

堆栈有点像数组。但是堆栈没有任何索引。您只能执行last / recent元素或删除last / recent元素。因此,在堆栈上,您只能执行pushpop这两个操作。

让我们看一段代码:

function one(){
 two();
}
function two() {
 three();
}
function three() {
 console.trace(“Lets Call The Stack”);
}
one();

因此堆栈流将如下所示: Stack = [ one, two, three ] 一旦执行three(),堆栈将如下所示: Stack = [ one, two ]; 执行two()之后,它变成这样: Stack = [ one ] 最后,当执行one()时,将停止事件循环,该循环仅意味着循环遍历堆栈并执行最后的代码/功能块。

现在,在使用p5.js / Processing的情况下,会调用并执行setup()函数,但是draw()函数会继续添加到堆栈中,并且事件循环会不断循环遍历堆栈并执行最后一个块/功能,在这种情况下为draw()

另一件事是您不能在另一个函数中声明setup()draw()。必须单独和分别声明。我不得不浪费很多精力去做,但是什么也找不到。