我试图在IIFE中运行p5,但收到此错误:
未捕获的TypeError:无法读取属性' className'未定义的
如果没有IIFE,它就不会出现。
sketch.js
var sketch = (function(p5) {
setup = function() {
p5.createCanvas(p5.windowWidth, p5.windowHeight);
p5.background(0);
};
}(new p5(sketch, "canvas")));
的index.html
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="style.css" />
<script src="http://cdnjs.cloudflare.com/ajax/libs/p5.js/0.4.23/p5.js"></script>
</head>
<body>
<script language="javascript" type="text/javascript" src="main.js"></script>
<div id = "canvas"></div>
</body>
</html>
答案 0 :(得分:1)
你的语法有点奇怪。为什么要在括号中包含函数和对new p5()
的调用?此外,您缺少setup()
函数定义的变量名称。
纠正所有这些看起来像这样:
var sketch = function(p5) {
p5.setup = function() {
p5.createCanvas(p5.windowWidth, p5.windowHeight);
p5.background(0);
};
}
new p5(sketch, "canvas");
我也不会使用p5
作为变量或参数名称,因为这是整个p5.js库的名称,所以我会这样做:
var s = function(sketch) {
sketch.setup = function() {
sketch.createCanvas(sketch.windowWidth, sketch.windowHeight);
sketch.background(0);
};
}
new p5(s, "canvas");
可以在the p5.js GitHub wiki找到更多信息。