大家下午好;
我正在使用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的值。你知道我怎么能解决这个问题吗?
问候,
答案 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来运行你的其余脚本。