2012-08-07 4 views
1

저는 Metro Apps를 처음 사용합니다. 그냥 초마다 새 사각형을 만들고 위치 x = 0으로 시작하고 싶습니다.Win8 Metro App setInterval Javascript

그러나 내 코드에서는 첫 번째 사각형이 그려지기 전에 x + = 10이 호출 된 것으로 보입니다. 그러나 나는 어떻게 내가 이것을 바꿀 수 있었는지 모른다. .. 누군가 나를 도와주세요.

(function() { 
    "use strict"; 

    var app = WinJS.Application; 
    var activation = Windows.ApplicationModel.Activation; 
    WinJS.strictProcessing(); 

    var x = 0; 
    var y = 0; 

    function Clock(context) { 

     context.fillRect(x, y, 9, 9); 
     context.fillStyle = "red"; 

     x += 10; 
    } 

    app.onactivated = function (args) { 
     if (args.detail.kind === activation.ActivationKind.launch) { 
      if (args.detail.previousExecutionState !== activation.ApplicationExecutionState.terminated) { 
       var canvas = document.getElementById("uhr"); 
       var context = canvas.getContext("2d"); 

       setInterval(function() { Clock(context) }, 1000); 


      } else { 

      } 
      args.setPromise(WinJS.UI.processAll()); 
     } 
    }; 

    app.oncheckpoint = function (args) { 

    }; 


    app.start(); 
})(); 

답변

0

임시 및 로컬 범위 변수에 Clock() 내부에 x 및 y 값을 저장해보십시오.

function Clock(context) { 
    var tmpX = x; 
    var tmpY = y; 
    context.fillRect(tmpX, tmpY, 9, 9); 
    context.fillStyle = "red"; 

    x += 10; 
} 
0

나는 이미 context.fill(); x + = 10;을하기 전에.

관련 문제