2014-02-16 17 views
2

大家下午好,处理js无功能达到素描值

我正在与processingjs合作,并且实现了处理js的一个特性;

我有一个叫做mysketch1.pde的草图文件,在我的草图里面我只声明了int x = 5;出于测试目的。因此,mysketch1.pde包含一个名为getX()的方法,它是x值的getter。

可以说,我想达到这个值并将其打印在我的网页上。如果我这样写我的Java脚本,我有一个问题;

<script type="text/javascript"> 

     var mysketch = Processing.getInstanceById("mysketch1");  


     if(mysketch==null){ 
      window.alert("it is null");  
     } 

     else 
      window.alert(mysketch.getX()); 
    </script> 

在此代码中,mysketch变量始终返回null。 (我包括我的素描在JavaScript头之前的部分)

但是,如果我把一个按钮,我的网页和调用相同的代码作为功能,它完美的作品;

<script type="text/javascript"> 

    function click(){ 

     var mysketch = Processing.getInstanceById("mysketch1");   
     if(mysketch==null){ 
      window.alert("it is null");  
     } 
     else 
      window.alert(mysketch.getX()); 
      } 
    </script> 
<button type="button" onclick="click()">place</button> 

我想这stuation happends因为在此之前我.pde文件不知何故JavaScript的工作是loaded.I想.pde被自动加载后显示X的值。你知道我该怎么处理这个问题?

问候,

+0

有点破解,但你可以轮询'getX()'直到它变成不是'null'?我不知道JS,但是像'var x = getX(); while(x!= null){sleep(1); x = getX();}'? – kevinsa5

+0

亲爱的凯文; 感谢您的回答。我用setTimeout()函数来解决这个问题。所以我让我的getX()方法等到。素描已准备就绪。 –

+0

我刚刚意识到我的评论中有一个错字,我的意思是'while(x == null)'......哦好。真高兴你做到了。我会将它作为未来访问者的答案发布。 – kevinsa5

回答

0

你应该把你的代码在window.onload事件:

window.onload = function() { 
    var mysketch = Processing.getInstanceById("mysketch1");  
    if (mysketch === null) { 
     window.alert("it is null");  
    } else { 
     window.alert(mysketch.getX()); 
    } 
} 
+0

亲爱的Zord; 不幸的是,它做同样的事情。我也尝试过在body标签上加载事件。 –

0

一个办法来解决这个问题将是轮询getX()功能,直到草图准备好,如设置超时等到变量不为空。这种方法也可以用来检查一般草图何时准备好,比如有一个函数isReady(){ return true;},并等待它不为空来运行脚本的其余部分。