2014-02-16 16 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;},並等待它不爲空來運行腳本的其餘部分。