编程语言
首页 > 编程语言> > javascript-避免在p5中使用全局范围

javascript-避免在p5中使用全局范围

作者:互联网

我刚刚在p5中启动了一个新项目,我已经使用了直接导入浏览器中的项目,但是这次,由于它是一个更复杂的项目,因此我将在webpack中使用它.

我导入了该库并以这种方式引导它:

import * as p5 from 'p5';

function setup() {
  createCanvas(640, 480);
}

function draw() {
  if (mouseIsPressed) {
    fill(0);
  } else {
    fill(255);
  }
  ellipse(mouseX, mouseY, 80, 80);
}

但这是行不通的.

原因很简单:webpack将模块包装在本地范围内,而p5却不知道.

因此,我将这些功能分配给了全局范围:

import * as p5 from 'p5';

window.setup = function () {
  createCanvas(640, 480);
}

window.draw = function () {
  if (mouseIsPressed) {
    fill(0);
  } else {
    fill(255);
  }
  ellipse(mouseX, mouseY, 80, 80);
}

它工作正常,但仍然看起来不对.我认为在2019年使用JS来处理全局范围是正确的方法.特别是如果我使用的是webpack,并且即将实现TypeScript.

那么,如何告诉p5在模块范围内而不是在全局范围内查找功能?

解决方法:

您将使用不依赖全局变量的instance mode.这是该页面上的示例:

var sketch = function( p ) {

  var x = 100; 
  var y = 100;

  p.setup = function() {
    p.createCanvas(700, 410);
  };

  p.draw = function() {
    p.background(0);
    p.fill(255);
    p.rect(x,y,50,50);
  };
};

var myp5 = new p5(sketch);

现场示例:

var sketch = function( p ) {

  var x = 100; 
  var y = 100;

  p.setup = function() {
    p.createCanvas(700, 410);
  };

  p.draw = function() {
    p.background(0);
    p.fill(255);
    p.rect(x,y,50,50);
  };
};

var myp5 = new p5(sketch);
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.7.3/p5.min.js"></script>

标签:p5-js,scope,webpack,javascript
来源: https://codeday.me/bug/20191108/2006538.html