パズルが解かれるまで、または何も動かないときにコールバックを続ける他の関数を呼び出す関数を呼び出すときに問題があります。同時に2つの関数を呼び出すときの問題
私は関数を2回呼び出す必要がありますが、異なる値を使用する必要があります。
私は値を格納しようとしましたが、すぐにwchichが呼び出す2番目の関数を呼び出すと、値が上書きされます。コードの
最も重要な部分はここにある:
function splitways(){
var strsp,aa=dir,bb=xy;
if(nextRock()){
if(xy!=start){
strsp=(aa+""+bb+""+dir+""+xy)*1;
if(!(strsp in arr)){
arr[strsp]=strsp;
caller(dir,xy);
}
}else{
count++;
}
}
}
function caller(num,pos){
var aa=num,bb=pos;
splitways();
//--
dir=aa;
xy=bb;
//--
dir==1?dir=4:dir--;
splitways();
}
ノート、splitways()
は私がsplitways()
に2回目の呼び出し前に・修正バックし、それらを変更しようとした理由があり、dir
とxy
の値を変更します。しかし、最初の呼び出しですべてが消去されます。
私は2時間できるすべてを試しました...私が持っていたベストショットはvar aa=num,bb=pos;
にキャッシュしていましたが、うまくいかなかったのです。
すべてのアイデアは、私はあなたのコードでやろうとしているか全くわからないが、私はあなたが混ざっあなたのロジックのいくつかを持っていると思う
グローバル変数 'dir、xy、start、arrなどについては心配しないでください。'彼らが意図しています – mithril333221
@Josephいいえ、私はそれを私はとらえました。完全なコードに興味がある場合は、http://jsfiddle.net/WgBpJ/ – mithril333221
を参照してください。問題はグローバル自体です。グローバルは非常に揮発性があり、どこでも編集可能で、誰が何を変更したのか追跡することはできません。 – Joseph