我一直在尝试使用有前途的p5.js库创建一个简单的Web应用程序,但我陷入困境,不知道如何继续前进。对我来说,为什么以下几行不起作用真的很神秘。我只是想加载一个简单的文本文件,我不能。当它显然不是时,它一直说它是空的。我没有做任何与p5js上的default example节目不同的事情。网站。
实际上我也尝试了默认示例,将要替换的字符串替换为: http://quarx.asfa.gr/data.txt 没别的了。我的服务器显示它正在发送字符串...我不知道p5js在做什么。任何的想法?代码如下。
var result;
var processedResult;
function setup() {
createCanvas(windowWidth, windowHeight);
var URL = "http://quarx.asfa.gr/data.txt";
result = loadStrings(URL, getHistoryState);
}
function draw() {
background(0);
ellipse(50, 50, 80, 80);
textSize(50);
text(processedResult, 300,300);
}
function getHistoryState() {
processedResult = result;
}
答案 0 :(得分:1)
您必须从托管脚本/页面的同一域中加载数据。
查看Same-Origin-Policy。尤其是this table:
答案 1 :(得分:0)
绘制文本draw()
的函数会在setup()
之后立即由API调用,因此很可能在回调(getHistoryState()
)之前有机会设置任何值到processedResult
。
在draw()
末尾添加getHistoryState()
:
function getHistoryState() {
processedResult = result;
draw();
}
或简单地摆脱getHistoryState()
,最终得到:
var result;
function setup() {
createCanvas(windowWidth, windowHeight);
var URL = "http://quarx.asfa.gr/data.txt";
result = loadStrings(URL, draw);
}
function draw() {
background(0);
ellipse(50, 50, 80, 80);
textSize(50);
text(result, 300,300);
}
但是在这两种情况下,draw()
我们会被调用两次(在setup()
之后,然后通过回调)。如果这不是您想要的,请将draw()
重命名为其他内容(或在draw()
开头添加语句,以便在processedResult
/ result
仍然存在的情况下返回空)。