-1

ゲーム終了時のアニメーションを作っています。このコードをさまざまなグーグルからつなぎ合わせました。

function showSpider(){
    for (var i=0;i<30;i++)
    {
        var theInterval=setInterval(function() { 
            newX=newX+1;
            if (newX>100){
                newX=100; 
                clearInterval(theInterval);
                document.getElementById('speak').style.visibility="visible";  
            }
            document.getElementById('spideranim').style.webkitTransform = "translate3d        (250px, "+newX+"px,0px)"; 
            document.getElementById('spideranim').style.visibility="visible";  
        }, 100); 
    }
    var temp=(Math.ceil((fliesShown/keysHit)*100));
    document.getElementById("speak").value="You got "+temp+" percent.";     
}

問題はそれが機能することです。間隔には必要ないはずなので、 for ステートメントを取り出してみました。その後、クモのアニメーションは表示されません。エラーは表示されません。

どうして取り出せないの?

私はまた、このコードで setInterval だけを試しました:

function showSpider() {
    theInterval=setInterval("wasteTime()",1000);
    var temp=(Math.ceil((fliesShown/keysHit)*100));
    document.getElementById("speak").value="You got "+temp+" percent accuracy.";        
}

function wasteTime(){   
    newX=newX+1;
    //alert("newX"+newX);
    //alert(document.getElementById('spideranim').style.webkitTransform);
    //alert(document.getElementById('spideranim').style.visiblity);
    if (newX>100){
        newX=100; 
        clearInterval(theInterval);
        document.getElementById('speak').style.visibility="visible";  
    }
    document.getElementById('spideranim').style.webkitTransform = "translate3d    (250px, "+newX+"px,0px)"; 
    document.getElementById('spideranim').style.visibility="visible"; 
}

これは動作しません。うまくいかないのはなぜですか?

4

1 に答える 1

0
  • 簡潔な答え:

newX はnewX=newX+1;実行されないため、100 を超えることはありません。

  • 長い答え:

もう少しコンテキストが必要です..他のコードなしでは何が起こっているのかわかりません.しかし、forループがなければ、newXは実行されないため、100を超えることnewX=newX+1;はありません.

したがって、 newX はループ前の値のままになります (例: newX=40)。結果として、document.getElementById('speak').style.visibility="visible";実行されることはありません (私は盲目的にそれが一種の勝利メッセージであると想定しています)

于 2013-03-30T02:00:16.913 に答える