gpt4 book ai didi

javascript - pjs 草图和 html Canvas

转载 作者:行者123 更新时间:2023-11-30 21:16:36 24 4
gpt4 key购买 nike

当我通过以下方式将 pjs 草图粘贴到 html Canvas 时,我试图了解我在做什么。

<body>
<canvas id="mycanvas" style="border: 1px solid black;"></canvas>
</body>
<script src="https://cdn.jsdelivr.net/processing.js/1.4.8/processing.min.js">
</script>

<script>
var sketchProc = function(processingInstance) {
with (processingInstance) {
size(800, 400);
frameRate(30);

draw = function() {
background(235, 245, 255);
};

}};
var canvas = document.getElementById("mycanvas");
var processingInstance = new Processing(canvas, sketchProc);
</script>

当我开始学习这些东西时,我很想将我的动画添加到 html 文档中。我通过上述方式几乎了解了仓鼠如何学会按下按钮并接收弹丸;也就是说,我不太了解这个机制,但结果是肯定的。

下面是上面的例子: https://jsfiddle.net/h1Lb91ux/

这是我试图理解这一点的尝试。

以下代码定义了一个名为 sketchProc 的函数。

var sketchProc = function(processingInstance) {
with (processingInstance) {
size(800, 400);
frameRate(30);

draw = function() {
background(235, 245, 255);
};

}};

这不会返回任何东西,因为我们只是在定义 sketchProc,而不是调用它。它的参数是 processingInstance,它被定义为局部变量,就像我所做的那样:

var functionX = function(x) {
return x;
};

但是我不明白with语句。我知道来自 excel-vba 的 with 语句,它可用于将多个方法附加到一个对象,而无需重复键入对象名称。这是一样的吗?

下面的陈述非常有道理。

var canvas = document.getElementById("mycanvas"); 

但下一个是困惑的根源:

var processingInstance = new Processing(canvas, sketchProc);

对我来说,这看起来像是我们从一个对象构造函数(在 javascript 中)或一个类(在处理中)创建一个实例或对象,它有两个参数:canvas 和 sketchproc。我们称这个特定的实例为 processingInstance,它与函数 sketchProc 中使用的局部变量同名,容易混淆。

我希望这不会太乱。

最佳答案

The following code is defining a function called sketchProc.

var sketchProc = function(processingInstance) {
with (processingInstance) {
size(800, 400);
frameRate(30);

draw = function() {
background(235, 245, 255);
};

}};

它定义了一个函数对象,它本身包含像draw() 这样的函数。您可以阅读有关函数对象的更多信息 here , 但基本上这只是一个包含 Processing 可以调用的函数的实例。

But I do not understand the with statement.

尝试在谷歌上搜索“javascript with”之类的内容以获得大量结果,包括 this one .但我的理解是,这是避免在一切之前调用 processingInstance. 的捷径。您可以尝试删除 with 语句并将 processingInstance. 放在任何 Processing 函数之前以查看替代方案。 with 是可选的,但可以让您的代码稍微短一些。我个人不喜欢在这里使用 with,但我就是这样。

But this next one is a source of confusion:

var processingInstance = new Processing(canvas, sketchProc);

To me, this looks like we're making a single instance or object from an object constructor function (in javascript) or a class (in processing), which takes 2 arguments: canvas and sketchproc. We're calling this specific instance processingInstance, which confusingly is the same name as the local variable used in the function sketchProc.

你的理解听起来是对的。创建 Processing 的实例是所有 Processing 魔术的开始,为您调用 setup() 函数和 draw() 函数自动地。如果它让您感到困惑,您也可以重命名该变量。

退一步说,这段代码使用了 Processing.js 的实例模式,这就是为什么你有所有这些你并不真正理解的额外代码。我建议您从更基本的全局模式开始,这将使您的代码看起来像这样:

<script type="application/processing">
function setup(){
size(800, 400);
frameRate(30);
}

function draw() {
background(235, 245, 255);
};
</script>
<canvas> </canvas>

我也很好奇您为什么要使用 Processing.js。如果你有 JavaScript 背景,你可能会更幸运 P5.js相反。

关于javascript - pjs 草图和 html Canvas ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45625287/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com