【发布时间】:2017-07-12 09:50:52
【问题描述】:
几天前我发现了 processing.js,我为此苦苦挣扎。我试图在按下按钮的那一刻出现画布。例如,这段代码有效,它在点击后创建了一个画布:
<!DOCTYPE HTML>
<html>
<script src="/js/processing.js"></script>
<head>
</head>
<body>
<input type="button" value="Cambiar imagen" id="clearbutton"
onclick="canvas();">
<script>
function canvas(){
var mycanvas = document.createElement("canvas");
mycanvas.id = "mycanvas";
document.body.appendChild(mycanvas); }
</script>
</body>
</html>
然后我尝试像这样更改代码:
function canvas(){
var mycanvas = document.createElement("canvas");
mycanvas.id = "mycanvas";
document.body.appendChild(mycanvas);
mycanvas.data-processing-sources = "/var/www/html/processing/jS2.pde"
}
但它会抛出一个错误,提示:invalid left-hand sign in asigment。
然后我尝试了类似的方法:
<script type="text/processing" data-processing-target="mycanvas">
void setup()
{
size(300,300);
background(0);
fill(255);
noLoop();
PFont fontA = loadFont("courier");
textFont(fontA, 14);
}
void draw(){
text("Hello!",20,20);
}
</script>
但这只是创建了一个白色画布,它忽略了处理脚本。 我也不是很擅长 javascript,所以如果你回答,谢谢。我已经检查了 processing.js 的参考文件,但很难遵循它。
按照评论中的建议,我尝试了:
<input type="button" value="Cambiar imagen" id="clearbutton" onclick="canvas();">
<script>
function canvas(){
var mycanvas = document.createElement("canvas");
mycanvas.id = "mycanvas";
document.body.appendChild(mycanvas);
var canvas = "/var/www/html/processing/jS2.pde"
var sources = canvas.getAttribute("data-processing-sources").split(/\s+/);
Processing.loadSketchFromSources(canvas, sources);
}
</script>
这给出了一个错误:canvas.getAttribute is not a function at canvas。
并尝试过:
<body>
<input type="button" value="Cambiar imagen" id="clearbutton" onclick="loadSketchOnContentSwap();">
<script>
function loadSketchOnContentSwap() {
var canvas = "/var/www/html/processing/jS2.pde"
var sources = canvas.getAttribute("data-processing-sources").split(/\s+/);
Processing.loadSketchFromSources(canvas, sources);
}
</script>
</body>
也许我错过了什么或没有将代码放在正确的位置?
这是小提琴的链接:https://jsfiddle.net/truxx/khht29zx/1/
/虽然它有一个问题,这段代码在我的 chrome 浏览器中创建了一个灰色画布,但是相同的代码在小提琴上没有这样做。 /
【问题讨论】:
-
尝试调用
Processing.loadSketchFromSources(canvas, sources);,正如 Processing.js 的创建者在 this answer 中所讨论的那样。 -
它不起作用,也许我做错了..我只是用我的尝试编辑了我的问题
-
首先
canvas变量必须是一个元素,而不是字符串。其次,您是否打印出sources变量以确保它符合您的期望?请尝试发布一个我们可以实际运行的minimal reproducible example,或者最好是一个指向运行您的代码的 CodePen 或 JSFiddle 的链接。 -
相信canvas是一个元素,应该是这样写的吧? : var canvas = /var/www/html/processing/JS2.pde 当我这样做时,我收到一条错误消息,提示“无效的正则表达式标志”
-
我不确定如果打印,你的意思是我只需要包含
console.log(sources);
标签: javascript canvas processing.js