0

画像をクリックするコードがあり、次のセルに移動できる場合は移動する必要があります。

function changecell(a){
    var moved=false;
    if(a%3 !=0) {
      if(ij[a-1]==0) {
         moved=true;
         if(moved==true) {
                no=firstmove++;                 
            move.innerHTML = no;
            playTick();
            }
            swap(a-1,a);
      }
   }

    if((a+1)%3 !=0 && moved==false) {
      if(ij[a+1]==0) {
            moved=true;
         if(moved==true) {
            no=firstmove++;                  
            move.innerHTML = no;
            playTick();
            }
            swap(a+1,a);
      }
   }
}

function playTick() {
    document.getElementById('tickSound').play();
}

function swap(x1,x2) {
    var temp=ij[x1];
   ij[x1]=ij[x2];
   ij[x2]=temp;
   var p = eval("document.images.i"+x1);
   p.src="images1/"+ij[x1]+".png";
   p = eval("document.images.i"+x2);
   p.src="images1/"+ij[x2]+".png";
}

私の問題は、最初のクリックでサウンドが2回再生され、その後、再生されるはずのように1回再生されることです。

誰かこれについて何か考えがありますか?

編集:

アラートが1回だけ表示alert()されるループに入れましたが、サウンドは2回再生されます。if(moved==true)が再びif(moved==true)実行されたとしalert()ます。

4

1 に答える 1

0

最初の実行で両方のif条件が満たされていると考えているため、playTick()メソッドが2回呼び出されています。の値を知らなければ、a確信が持てません。

于 2013-02-27T09:07:12.267 に答える