2012-07-16 136 views
1

我正在嘗試製作一個遊戲,其中單擊了一個按鈕,並且健康狀況欄中的45個健康點關閉。我有我的所有編碼,並且運行良好,但我想製作按鈕,以便在健康狀況低於45時,不會從健康狀況欄中獲取任何信息。我試過使用:Actionscript-3:使變量保持不變

if(health < 45) health = health; 

但它沒有奏效。我有一種感覺,解決這個問題很簡單,但我無法弄清楚。很顯然,我對這一切都很陌生,但仍然很難將自己的頭腦放在一些概念上。這是我的編碼:

fortyfivedown_btn.addEventListener(MouseEvent.CLICK, fortyfivedownClick); 

    var health:int = 100; 

    lifebar.gotoAndStop(101); 

    function fortyfivedownClick(event:MouseEvent):void{ 
     health -= 45; 
     if(health < 0) health = 0; 
     else if(health > 100) health = 100; 

     lifebar.gotoAndStop(health + 1); 
    } 

回答

1

如果健康小於或等於45,根本什麼都不做就沒有什麼問題嗎?例如,如下所示:

function fortyfivedownClick(event:MouseEvent):void { 
    if (health <= 45) { 
     return; 
    } 
    // Perform action 
} 

如果玩家身體不健康,這將導致函數提前退出。

+0

非常好,這就是所謂的「守衛聲明」,我必須說我一直都在使用它。我認爲它們非常棒,它們使代碼簡單明瞭,但只有在代碼開始時才應該使用它們。好工作。 – 2012-07-16 08:34:41

0

如果我不解的問:

if(health>=45) // just add this 
    lifebar.gotoAndStop(health + 1); 
0

它其實很簡單,你的情況告訴您的健康由45和下井然後檢查是否健康是低於0,你只需要檢查多少健康你在方法的最開始時,如果它是45或更低,則跳出該方法。

如果 「破發」 的FLASH作品,但是這將是最簡單的解決

如不知道:

function fortyfivedownClick(event:MouseEvent):void{ 
    if (health <= 45) { 
     break; 
    } 
    health -= 45; 
    if(health < 0) health = 0; 
    else if(health > 100) health = 100; 
    lifebar.gotoAndStop(health + 1); 
    } 
0

使用Math.max方法。 IT非常方便,如價值規範化。

function fortyfivedownClick(event:MouseEvent):void{ 
    health = Math.max(45, health -= 45); 
}