2016-07-11 12 views
1

在处理草图,我得到如何从javaskript访问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; 
    } 
    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); 
} 

HTML:

<!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> 

,当我试图通过JavaScript和警报访问POSX变量它在屏幕上像浏览器告诉我,它是未定义的。有没有办法访问变量并更改它们的值。

+0

你可以发布[mcve]或小提琴吗?你什么时候执行JavaScript?你确定它是在你的Processing代码被加载后发生的吗? –

+0

它是一个普通的HTML文件,在我的画布后,我得到两个按钮之一来启动'loop()'和一个谁停止动画与'Noloop()'后他们我有我的JavaScript代码,我很岸,我的代码加载因为我使用动画球来移动画布,我通过按钮开始和停止动画 –

+0

在没有看到我们可以运行的[mcve]或者我们可以使用的JSFiddle的情况下帮助你很难。 –

回答

0

草图有几个逻辑问题:你intfloat类型之间的切换,以及你使用未定义的变量rgb

我强烈建议在Java模式下编程,以便这些错误更明显,然后在准备好部署时切换到JavaScript模式。

但是你真正的问题是这样的:Processing.js只允许你访问一个草图的函数,而不是它的变量。

如果你想在JavaScript中得到posX,你将不得不编写一个getPosX()函数,然后用JavaScript调用它。

同样的事情,如果你想设置它:创建一个setPosX()函数,然后调用它。

+1

我在我的测试中使用r,g,b变量“东西”我只是忘记删除它们,当我发布它的工作原理时,我为positionX创建了一个函数,我称它为 –

+0

@Mimi尼斯。很高兴你把事情解决了。 –