processingjs在没有功能的情况下达到草图值

时间:2014-02-16 16:20:05

标签: javascript processing

大家下午好;

我正在使用processingjs,我意识到processingjs的一个特征;

我有一个名为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>

我认为这种情况发生的原因是因为在我的.pde文件加载之前javascript工作。我希望在.pde自动加载后显示X的值。你知道我怎么能解决这个问题吗?

问候,

2 个答案:

答案 0 :(得分:0)

您应该将代码放在window.onload事件中:

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

答案 1 :(得分:0)

解决这个问题的一种方法是轮询getX()函数,直到草图准备就绪,就像设置超时一样等到变量不为空。这种方法也可用于检查草图一般是否准备就绪,比如有一个函数isReady(){ return true;}并等到它不是null来运行你的其余脚本。