2016-09-13 2 views
0

4つのdivの単純なアニメーションのコードを乱数で作成した任意の位置に移動するコードを書きました。私は同じプロセスを10回繰り返すだけです。私はコールバック関数の概念を使用しましたが、うまくいきませんでした。私はfor-loopを使用しましたが、プロセスはまだ1回だけ実行されます。どのようにして何度もプロセスを繰り返すことができますか?javascriptでのプロセスの繰り返し

$(document).ready(function() {$(init)}); 
 

 
    var xRandom; 
 
    var yRandom; 
 

 
function createNumbers(callback) { 
 
    xRandom=200+10*Math.floor(Math.random()*9); 
 
    yRandom=200+10*Math.floor(Math.random()*9); 
 
    callback(); 
 
}; 
 

 
function init() { 
 

 
for (var i=0;i<10;i++) { 
 
    createNumbers(process); 
 
} 
 
} 
 

 
function process() { 
 
    var w=150; 
 
    var h=150; 
 
    $('.number').on("click",function() { 
 
     $(this).animate({ 
 
      left : xRandom, 
 
      top : yRandom, 
 
      width : w, 
 
      height :h, 
 
     },1000); 
 
    }); 
 
}
body { 
 
    margin: 30px; 
 
    font-family: "Georgia", serif; 
 
    line-height: 1.8em; 
 
    color: #333; 
 
    } 
 
    #ejer { 
 
    position :relative; 
 
    width : 800px; 
 
    height : 600px; 
 
    background: lightgrey; 
 
    font-family: "Georgia", serif; 
 
    border: 2px solid grey; 
 
    z-index: 2; 
 
    } 
 

 
#div1 { 
 
    position :absolute; 
 
    top : 50px; 
 
    left :50px; 
 
    z-index: 1; 
 
} 
 

 
#div2 { 
 
    position :absolute; 
 
    top : 50px; 
 
    left :150px; 
 
} 
 

 
#div3 { 
 
    position :absolute; 
 
    top : 50px; 
 
    left :250px; 
 
} 
 

 
#div4 { 
 
    position :absolute; 
 
    top : 50px; 
 
    left :350px; 
 
} 
 

 
    .number { 
 
    position :absolute; 
 
    top : 50px; 
 
    left :50px; 
 
    width : 100px; 
 
    height : 50px; 
 
    background: yellow; 
 
    border: 2px solid grey; 
 
    border-radius: 10px; 
 
    text-align: center; 
 
    vertical-align: middle; 
 
    display: table-cell; 
 
    font: 30px Verdana, sans-serif; 
 
    z-index: 2; 
 

 
    }
<head> 
 

 
    <title>A simple loop example</title> 
 
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> 
 
    
 
    <script src="https://code.jquery.com/jquery-2.2.4.min.js"></script> 
 
    <script src="https://code.jquery.com/ui/1.12.0/jquery-ui.min.js"></script> 
 
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script> 
 

 
<body> 
 
    <div id="ejer" > 
 
    <div id="div1" class="number">div1</div> 
 
    <div id="div2" class="number">div2</div> 
 
    <div id="div3" class="number">div3</div> 
 
    <div id="div4" class="number">div4</div> 
 
    </div> 
 

 
</body> 
 
</head>

答えて

0

あなたはゲームループのようなものを実装することができます。

var i =0; 
function init(){ 
    if(i<10){ 
     createNumbers(process); 
     i++; 
     requestAnimationFrame(init); 
    } 
} 

あなたがリピートする機能の最後にrequestAnimationaFrameを呼び出します。

1

私はあなたがそれをクリックするとdivを10回動かしたいと思っています。そのような場合は、ループの場所とアニメーションを追加する方法に問題があります。アニメーションを追加する際に、追加のループを追加します。私が作った大きな変化が

  1. アニメーション
  2. までの数字の完全なリストを渡している

    $(document).ready(function() {$(init)}); 
     
    
     
        var xRandom; 
     
        var yRandom; 
     
    
     
    function createNumbers() { 
     
        xRandom=200+10*Math.floor(Math.random()*9); 
     
        yRandom=200+10*Math.floor(Math.random()*9); 
     
        return [xRandom, yRandom] 
     
    }; 
     
    
     
    function init() { 
     
    var numbers = []; 
     
    for (var i=0;i<10;i++) { 
     
        numbers.push(createNumbers()); 
     
    } 
     
    process(numbers); 
     
    } 
     
    
     
    function process(numbers) { 
     
        var w=150; 
     
        var h=150; 
     
        $('.number').on("click",function() { 
     
         for(var i = 0;i < numbers.length; i++) { 
     
          $(this).animate({ 
     
           left : numbers[i][0], 
     
           top : numbers[i][1], 
     
           width : w, 
     
           height :h, 
     
          }, { 
     
           duration: 1000, 
     
           queue: true 
     
          }); 
     
         } 
     
        }); 
     
    }
    body { 
     
        margin: 30px; 
     
        font-family: "Georgia", serif; 
     
        line-height: 1.8em; 
     
        color: #333; 
     
        } 
     
        #ejer { 
     
        position :relative; 
     
        width : 800px; 
     
        height : 600px; 
     
        background: lightgrey; 
     
        font-family: "Georgia", serif; 
     
        border: 2px solid grey; 
     
        z-index: 2; 
     
        } 
     
    
     
    #div1 { 
     
        position :absolute; 
     
        top : 50px; 
     
        left :50px; 
     
        z-index: 1; 
     
    } 
     
    
     
    #div2 { 
     
        position :absolute; 
     
        top : 50px; 
     
        left :150px; 
     
    } 
     
    
     
    #div3 { 
     
        position :absolute; 
     
        top : 50px; 
     
        left :250px; 
     
    } 
     
    
     
    #div4 { 
     
        position :absolute; 
     
        top : 50px; 
     
        left :350px; 
     
    } 
     
    
     
        .number { 
     
        position :absolute; 
     
        top : 50px; 
     
        left :50px; 
     
        width : 100px; 
     
        height : 50px; 
     
        background: yellow; 
     
        border: 2px solid grey; 
     
        border-radius: 10px; 
     
        text-align: center; 
     
        vertical-align: middle; 
     
        display: table-cell; 
     
        font: 30px Verdana, sans-serif; 
     
        z-index: 2; 
     
    
     
        }
    <head> 
     
    
     
        <title>A simple loop example</title> 
     
        <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> 
     
        
     
        <script src="https://code.jquery.com/jquery-2.2.4.min.js"></script> 
     
        <script src="https://code.jquery.com/ui/1.12.0/jquery-ui.min.js"></script> 
     
        <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script> 
     
    
     
    <body> 
     
        <div id="ejer" > 
     
        <div id="div1" class="number">div1</div> 
     
        <div id="div2" class="number">div2</div> 
     
        <div id="div3" class="number">div3</div> 
     
        <div id="div4" class="number">div4</div> 
     
        </div> 
     
    
     
    </body> 
     
    </head>

  3. :これを試してみてください
  4. キューを追加する:アニメーションに真実なので、キューに入れられます。
関連する問題