我已经能够启动并运行node.js服务器(并转发端口),但我似乎无法弄清楚如何在没有客户端代码崩溃或不工作的情况下在draw循环之外定义变量正常。
当我在绘制循环中定义它时,一切都加载并正常工作,但变量不断重新定义,这意味着我无法改变它。
当我在绘制循环外定义它时,代码停止(在绘制循环内)我尝试使用该变量。然后永远不再调用绘制循环。
工作代码:
var socket;
var httpProxy = require('http-proxy');
var targetHost = '75.38.209.199';
var port = 25565;
httpProxy.createProxyServer({target:'http://' + targetHost + ':' + port}).listen(port);
function setup() {
createCanvas(800, 600);
socket = io.connect('');
}
function draw() {
var x = 20;
background(50);
fill(255);
text(x, 300, 300);
x++;
}
如果你试试这个,那么你会注意到x总是保持在20。 所以,我尝试在循环外定义变量:
var socket;
var httpProxy = require('http-proxy');
var targetHost = '75.38.209.199';
var port = 25565;
httpProxy.createProxyServer({target:'http://' + targetHost + ':' + port}).listen(port);
function setup() {
createCanvas(800, 600);
socket = io.connect('');
}
var x = 20;
function draw() {
background(50);
fill(255);
text(x, 300, 300);
x++;
}
当我运行它时,文本甚至没有显示(因为它无法运行),并且绘制循环只被调用一次。
当我运行第二个代码时,Chrome JavaScript控制台会返回以下内容:
未捕获的TypeError:无法读取未定义的属性'toString' 在p5.Renderer2D.text(p5.js:13283) 在p5.text(p5.js:26924) 在画画(sketch.js:34) 在p5.redraw(p5.js:14256) 在第5页。 (p5.js:9143) 在第5页。 (p5.js:9049) 在新的p5(p5.js:9320) 在_globalInit(p5.js:5602)
如果您需要服务器代码或客户端的HTML,我会在询问时提供。帮助
编辑:实例模式代码
var socket;
var httpProxy = require('http-proxy');
var targetHost = '75.38.209.199';
var port = 25565;
httpProxy.createProxyServer({target:'http://' + targetHost + ':' + port}).listen(port);
var s = function( sketch ) {
var x = 100;
var y = 100;
sketch.setup = function() {
sketch.createCanvas(200, 200);
};
sketch.draw = function() {
sketch.background(0);
sketch.fill(255);
sketch.rect(x,y,50,50);
};
};
var myp5 = new p5(s);