0

体の背景位置を一定間隔でランダムにアニメートしたい。配列に格納されているいくつかの事前定義された背景位置値(x、y)があります。

これまでのスクリプトは次のとおりです。

$(document).ready(function() {
    var xyz = new Array();
    xyz[1] = "backgroundPosition: '0% 0%'";
    xyz[2] = "backgroundPosition: '53% 34%'";
    var item = xyz[Math.floor(Math.random()*xyz.length)];

    var move = setInterval(function(){
        $('body').animate({item}, 2000);
    }, 7000);
});

誰かが問題がどこにあるか教えてもらえますか?コードの最適化はありますか?どうもありがとう!

4

2 に答える 2

1

毎回設定するわけではありません。変更されたコード。コード内でアイテムが設定されているのは1回だけです。その行をsetInterval内に移動すると、アイテムセットが毎回変更されます。

 $(document).ready(function() {
        var xyz = new Array();
        xyz[1] = {"backgroundPosition": '0% 0%'};
        xyz[2] = {"backgroundPosition": '53% 34%'};     

        var move = setInterval(function(){
            var item = xyz[Math.floor(Math.random()*xyz.length)];
            $('body').animate(item, 2000);
        }, 7000);
    });
于 2012-09-28T14:21:41.943 に答える
1

アイテムは毎回再定義する必要があります。また、Math.floor(Math.random()*xyz.length)0にすることもできるので、xyzのキー1から開始するため、計算に1+を追加しました。

 $(document).ready(function() {
        var xyz = new Array();
        xyz[1] = {backgroundPosition: '0% 0%'};
        xyz[2] = {backgroundPosition: '53% 34%'};     

        var move = setInterval(function(){
            var item = xyz[1+Math.floor(Math.random()*(xyz.length-1))];
            $('body').animate(item, 2000);
        }, 7000);
    });
于 2012-09-28T14:25:21.407 に答える