2014-02-07 51 views
0
public void globalPb_MouseDown(object sender, MouseEventArgs e) 
     { 
      if (e.Button == MouseButtons.Middle) 
      { 
       if (pause == false) 
       { 
        for (int i = 0; i < pbs.Length; i++) 
        { 
         pbs[i].PauseAnimate(); 
         pause = true; 
        } 
       } 
       if (pause == true) 
       { 
        for (int i = 0; i < pbs.Length; i++) 
        { 
         pbs[i].ContinueAnimate(); 
        } 
        pause = false; 
       } 

      } 
     } 

我想,如果變量暫停爲false,那麼暫停,如果它的真實然後繼續。 但在IF檢查,如果它的假,我把它設置爲真,所以下一步檢查它的真實性,所以它永遠不會暫停。我如何檢查布爾是假的還是真的,然後做點什麼?

我應該怎麼做檢查的邏輯?

+1

你可以只用'其他if',而不是'if'。 –

+1

當涉及到一個普通的舊布爾值時,可以使用'else'而不是'else if'。 – 48klocs

+0

如果你想暫停,當'暫停'爲假,並且當'暫停'爲真時,你可以考慮將它重命名爲'active'或'animating',甚至是'unpaused'。 – mao47

回答

5

嘗試使用聲明的else部分:

if (!pause) { 
    for (int i = 0; i < pbs.Length; i++) { 
    pbs[i].PauseAnimate(); 
    } 
    pause = true; 
} else { 
    for (int i = 0; i < pbs.Length; i++) { 
    pbs[i].ContinueAnimate(); 
    } 
    pause = false; 
} 

爲了進一步清理,我可能會先寫一部分真:

for (int i = 0; i < pbs.Length; ++i) { 
    if (paused) { 
    pbs[i].ContinueAnimate(); 
    } else { 
    pbs[i].PauseAnimate(); 
    } 
} 
pause = !pause; 
+0

如果滿足「if」,它將不執行'else'。 –

+0

呃,這是正確的我想念。 –

+1

因爲'if(pause)'比'if(!pause)'更容易閱讀,所以我會交換'if'和'else'。 –

4

你不需要if (pause == false),你可以做if (!pause),你也可以做if ... else ...,所以你現在得到:

if (pause) 
{ 
    for (int i = 0; i < pbs.Length; i++) 
    { 
    pbs[i].ContinueAnimate(); 
    } 
    pause = false; 
} 
else 
{ 
    for (int i = 0; i < pbs.Length; i++) 
    { 
    pbs[i].PauseAnimate(); 
    }  
    pause = true; 
} 

請注意,我重新安排它做if (pause) ... else ...,這比if (!pause) ... else ...更直觀。我也重新安排你的for循環稍微使他們看起來是一樣的 - 這甚至可能導致你到一個完全重構的解決方案:

public void globalPb_MouseDown(object sender, MouseEventArgs e) 
{ 
    if (e.Button == MouseButtons.Middle) 
    { 
    for (int i = 0; i < pbs.Length; i++) 
    { 
     AnimatePauseOrContinue(pause, pbs[i]); 
    } 
    pause = !pause; 
    } 
} 
public void AnimatePauseOrContinue(bool shouldPause, pbType pb) 
{ 
    if (shouldPause) 
    pb.PauseAnimate(); 
    else 
    pb.ContinueAnimate(); 
} 
相關問題