2017-09-13 85 views
1

我想生成一個隨機數,我在條件語句(If...else)中使用作爲一個變量。 function PositionLoop(),其中條件陳述發生,分配​​。但是,我希望隨機數不要在每個幀中重新生成。這太頻繁,太快了。例如,我希望數字每3秒更改一次。另一個問題是,條件語句包含變量(Font),其中我再次使用在內部function PositionLoop()代碼另一條線......隨機數在功能與不同frameRate

我已經嘗試不同的事情 - 首先我創建了一個功能,隨機數和調用其他函數內的變量function PositionLoop()Accessing variables from other functions without using global variables),然後我嘗試了全局變量 - 但它不起作用。有人可以幫我嗎? - 非常感謝你!

這是我的代碼結構:

… 

function positionLoop() { 
    requestAnimationFrame(positionLoop); 

    … 


    var Zufallszahl1 = random(0,30); 
    var Font; 
    if (Zufallszahl1 = 6) { 
     Font = …; 
    } else if (Zufallszahl1 = 8) { 
     Font = …; 
    } else { 
     Font = …; 
    }; 

    if (parameter < x) { 
     Schriftart = …; 
    } else if (parameter > x) { 
     Schriftart = Font; 
    } else { 
     Schriftart = …; 
    }; 

    var Gestalt = selectAll('.class1'); 
    for (var i = 0; i < Gestalt.length; i++) { 
     Gestalt[i].style('font-family', Schriftart); 
     Gestalt[i].style(…); 
     Gestalt[i].style(…); 
     … 
    }; 

    … 

}positionLoop(); 

… 
+1

_「不過,我想隨機數在每個不重新產生這太頻繁,太快了。「_呃,你想多久更新一次? –

+1

*「一個if循環」*:那是什麼? – trincot

+0

同意以前的評論。爲了幫助你,'positionLoop'將會收到一個HighResTimeStamp(類似於performance.now),你可以用它來間隔地觸發特殊事件。 – Kaiido

回答

0

你可以使用一個單獨的間隔爲:

(function() { 
    var Zufallszahl1; 
    function changeZufallszahl1() { 
     Zufallszahl1 = random(0,30); 
     if (Zufallszahl1 = 6) { 
      Font = …; 
     } else if (Zufallszahl1 = 8) { 
      … 
     } else { 
      … 
     } 

     … 

    } 

    changeZufallszahl1(); 
    // Repeat with whatever delay you want between changes 
    setInterval(changeZufallszahl1, 1000); 

    // Keep your animation loop separate: 
    function positionLoop() { 
     requestAnimationFrame(positionLoop); 

     … 


    } 
    positionLoop(); 
})(); 
+0

感謝您的回答!我真的忘了提到某事。重力(對不起):條件語句(if ... else)包含一個變量(Font),我在函數PositionLoop()的另一行再次使用該變量... –

+0

只需在與' Zufallszahl1',所以在IIFE範圍內。 – trincot

+0

不錯的工作!非常感謝!!! :) –