Javascript 如何从javaskcript访问processing.js变量并对其进行更改
在我得到的加工草图中Javascript 如何从javaskcript访问processing.js变量并对其进行更改,javascript,processing,processing.js,Javascript,Processing,Processing.js,在我得到的加工草图中 int posX = 10; int posY = 10; int s = 12; int vx,vy; int red,gr,bl, =0; void setup(){ size(200,200); vx = random(6); vy = random(6); } void draw(){ if(mousePressed){ red = r; gr = g; bl = b; } backgro
int posX = 10;
int posY = 10;
int s = 12;
int vx,vy;
int red,gr,bl, =0;
void setup(){
size(200,200);
vx = random(6);
vy = random(6);
}
void draw(){
if(mousePressed){
red = r;
gr = g;
bl = b;
}
background(red,gr,bl);
fill(255);
posX += vx ;
posY += vy ;
if (posX > width || posX<0){
vx *= -1;
}
if(posY > height || posY < 0){
vy *= -1;
}
ellipse (posX,posY,s,s);
}
intposx=10;
int-posY=10;
int s=12;
intvx,vy;
红色整数,gr,bl,=0;
无效设置(){
规模(200200);
vx=随机(6);
vy=随机(6);
}
作废提款(){
如果(鼠标按下){
红色=红色;
gr=g;
bl=b;
}
背景(红色、绿色、蓝色);
填充(255);
posX+=vx;
posY+=vy;
如果(posX>宽度| | posX高度| | posY<0){
vy*=-1;
}
椭圆(posX,posY,s,s);
}
HTML:
开始
停止
var处理立场;
sp=1;
函数startSketch(){
开关状态(真);
}
函数stopSketch(){
开关状态(假);
}
功能开关状态(on){
如果(!processingInstance){
processingInstance=Processing.getInstanceById('canvas');
}
如果(打开){
processingInstance.loop();
}
否则{
processingInstance.noLoop();
}
alert(processingInstance.posX);//此返回未定义我必须看到10
}
当我试图通过javascript访问posX变量并在屏幕上提醒它时,浏览器会告诉我该变量未定义。是否有任何方法访问变量并更改其值 您的草图有两个逻辑问题:在
int
和float
类型之间切换,并且使用未定义的变量r
g
和b
我强烈建议使用Java模式编程,以便这些错误更加明显,然后在准备部署时切换到JavaScript模式
但您真正的问题是:Processing.js只允许您访问草图的函数,而不是其变量。
如果您想在JavaScript中获得posX
,那么必须编写getPosX()
函数,然后从JavaScript调用该函数
如果您想设置它,同样的事情是:创建一个
setPosX()
函数,然后调用它。您的草图有两个逻辑问题:您在int
和float
类型之间切换,并且使用未定义的变量r
g
和b
我强烈建议使用Java模式编程,以便这些错误更加明显,然后在准备部署时切换到JavaScript模式
但您真正的问题是:Processing.js只允许您访问草图的函数,而不是其变量。
如果您想在JavaScript中获得posX
,那么必须编写getPosX()
函数,然后从JavaScript调用该函数
如果您想设置它,也要做同样的事情:创建一个
setPosX()
函数,然后调用它。试试这个,它会在js的第67行记录一个处理变量
Hello Web-从JavaScript控制处理
int x=y=1;
int xVel=yVel=3;
int t=300;
无效设置(){
大小(310200);
背景(100);
中风(255);
println('helloweb!');
}
int getX(){
返回t;
}
作废提款(){
椭圆(x,y,10,10);
x=x+xVel;
y=y+yVel;
如果((x>宽度)| |(x<0)){
xVel=xVel*-1;
}
如果((y>高度)| |(y<0)){
yVel=yVel*-1;
}
}
开始
停止
试试这个,它会在第67行的js中记录一个处理变量
Hello Web-从JavaScript控制处理
int x=y=1;
int xVel=yVel=3;
int t=300;
无效设置(){
大小(310200);
背景(100);
中风(255);
println('helloweb!');
}
int getX(){
返回t;
}
作废提款(){
椭圆(x,y,10,10);
x=x+xVel;
y=y+yVel;
如果((x>宽度)| |(x<0)){
xVel=xVel*-1;
}
如果((y>高度)| |(y<0)){
yVel=yVel*-1;
}
}
开始
停止
你能贴一张纸或一把小提琴吗?什么时候执行JavaScript?你确定这是在加载处理代码后发生的吗?这是一个普通的HTML文档,在我的画布上我有两个按钮,一个启动loop()
,另一个用Noloop()停止动画
在它们之后,我得到了我的javascript代码,我很高兴我的代码被加载了,因为我给球设置了动画,让它在画布上游荡,我通过按钮启动和停止动画。如果看不到我们可以运行的,或者一个我们可以使用的JSFIDLE。没有必要出现在那个特定的示例中。我只需要一种方法来访问从javascript到处理的变量,并能够读写该变量(如果可能)。您发布的代码看起来不错,但它不足以真正回答您的问题。我们需要看到更多的代码,特别是我们可以运行的代码,可以是一个或一个JSFIDLE?什么时候执行JavaScript?你确定这是在加载处理代码后发生的吗?这是一个普通的HTML文档,在我的画布上我有两个按钮,一个启动loop()
,另一个用Noloop()停止动画
在它们之后,我得到了我的javascript代码,我很高兴我的代码被加载了,因为我给球设置了动画,让它在画布上游荡,我通过按钮启动和停止动画。如果看不到我们可以运行的,或者一个我们可以使用的JSFIDLE。没有必要出现在那个特定的示例中。我只需要一种方法来访问从javascript到处理的变量,并能够读写该变量(如果可能)。您发布的代码看起来不错,但它不足以真正回答您的问题。我们需要看到更多的代码,特别是我们可以运行的代码,无论是a还是JSFIDLE
<!DOCTYPE html>
<html>
<head>
<script src="processing-1.4.1.js"></script>
</head>
<body>
<div id="msg">
</div>
<canvas id = "canvas" data-processing-sources="mixing.pde"></canvas>
<button onclick = "startSketch();">Start</button>
<button onclick = "stopSketch();">Stop</button>
<script type="application/javascript">
var processingInstance;
sp = 1;
function startSketch(){
switchSketchState(true);
}
function stopSketch(){
switchSketchState(false);
}
function switchSketchState(on){
if(!processingInstance){
processingInstance = Processing.getInstanceById('canvas');
}
if (on){
processingInstance.loop();
}
else{
processingInstance.noLoop();
}
alert(processingInstance.posX);// this return undefined i have to see 10
}
</script>
</body>
</html>