2014-12-31 2 views
0

나는 이렇게 발견 된 몇 가지 다른 접근 방법을 시도했지만 그럴 수는 없습니다.SetInterval 함수에서 임의 번호가 업데이트되지 않음

배열에서 임의로 선택한 항목을 setInterval 함수에서 업데이트하려고하지만 임의의 숫자가 변경되지 않습니다.

처음로드시 임의로 선택되지만 함수가 다시 실행될 때마다 사실 이후에 업데이트되지 않습니다. 이 jsFiddle -----

다시 실행 반복해서 바이올린 무작위로 선택된 다른 경로를 볼 수에 (이후 여기 https://github.com/camoconnell/lazy-line-painter

var pathArray = [pathOne,pathTwo,pathThree,pathFour,pathFive,pathSix], 
colors = ['#e51616','#0000FF','#FFFF00','#00FF00'], 
drawBox = $('#drawing-box'), 
svg = $('#drawing-box svg'), 
svgPath = document.createElementNS("http://www.w3.org/2000/svg", "path"); 

function randomFrom(array) { 
    return array[Math.floor(Math.random() * array.length)]; 
} 

randomColor = randomFrom(colors); 

var i = Math.floor(Math.random() * (5 - 0 + 1)); 
console.log(i); 

function Draw(){ 

    var drawLoop = setTimeout(function(){ 
        $('#drawing-box svg path').animate({'opacity':0},300); 
        setTimeout(function(){ 
         $('#drawing-box svg path').remove(); 
         drawBox.lazylinepainter('paint'); 
         console.log(pathArray[i]); 
        },350); 
       },5500); 

    var drawFunc = drawBox.lazylinepainter({ 
       "svgData": pathArray[i], 
       "strokeColor": randomColor, 
       "strokeWidth": 5, 
       "responsive": true, 
       "onComplete": drawLoop 
      }); 

    drawFunc.lazylinepainter('paint') 
}; 

setInterval(function(){ 
    Draw(); 
},6000); 

:

는 모두 lazylinepainter 플러그인을 사용하고 있습니다 그렇지 않으면 업데이트되지 않습니다).

스 니펫이 분명하고 거기에 몇 가지 다른 것들을 시도하고 있었으면 좋겠다.

궁극적 인 목표는 각 구간마다 pathArray (pathOne, pathTwo, pathThree 등)에서 무작위로 선택한 항목을 그 선에 그려야한다는 것입니다.

답변

1

실제 함수를 한 번만 호출 한 다음 계속해서 사용되는 randomColor에 할당하는 것처럼 보입니다.

은 당신이 대신해야 할 것은이 필요한 곳을 호출 할 수 있습니다 :

var drawFunc = drawBox.lazylinepainter({ 
      "svgData": pathArray[i], 
      "strokeColor": randomFrom(colors), 
      "strokeWidth": 5, 
      "responsive": true, 
      "onComplete": drawLoop 
     }); 

당신은 새로운 하나를 모든 시간을 얻을 그런 식으로.

+0

음 난 임의의 색상 (randomColor) 가져 오는 임의의 경로 (pathArray) 가져 오는 두 diff 접근 방식을 시도하고있다. 내가 그리기 기능 내에서 전화를하면 업데이트 될 것이라고 생각했지만 ... 그리기 기능으로 모두 묶어 야하나요? – emotions

+1

두 경우 모두'Draw()'함수 밖에서'Math.random() '을 호출하고 있으므로 페이지가 시작될 때 한번 호출되고 결코 다시는 호출되지 않습니다. 따라서 함수 내에서 호출해야합니다. –

+0

Ahhhhh 좋아, 간격의 내부에 Math.random() 함수를 포함하여 코드를 업데이트했습니다. 무작위 #을 console.log에 쓰고 있는데 지금은 확실히 업데이트하고 있지만 그려진 선 자체는 전혀 변하지 않습니다 ... 왜 이런 생각일지도 모릅니다. fiddle : http://jsfiddle.net/gmrx8x2h/2/ – emotions

관련 문제