2013-04-18 71 views
0

聲明我已經寫了這個功能,在一個單獨的函數事件監聽迴應:條件IF在AS3

編輯:已更新工作代碼。

 function greyOutItems(event:Event):void { 

     if (DisableCheckBox.selected) { 
      myComboBox.alpha = 0.5; 

      myComboBox.enabled = false; 
      trace("hide combobox success"); 
     } 
     if (DisableCheckBox.selected == false) { 
      myComboBox.visible = true; 
      myComboBox.enabled = true; 
      trace("visible"); 
     } 
    } 

第一if語句適用,隱藏組合框,當用戶點擊該複選框,但我希望用戶能夠取消選中同一複選框,使組合框再次可見。

理想情況下,不是將alpha屬性設置爲0,我寧願如果組合框「變灰」,儘管我還沒有找到該屬性。

+0

謝謝你解決了這個問題,相當簡單,我知道。發表您的評論作爲答案,我會接受。 – adaam

+0

'myComboBox'是一個動畫片段嗎? –

+0

@Sim這是一個電影剪輯 – adaam

回答

1

您的條件將總是是真實的,因爲您將它們設置爲有條件的值。 「=」用於「分配」屬性只有。 「==」是「等同於」。所以if (DisableCheckBox.selected = true)實際上將selected屬性設置爲true和條件工作的方式,因爲它成功地設置了該值,它被標記爲真正的語句。

function greyOutItems(event:Event):void { 
    if (DisableCheckBox.selected == true) { 
     myComboBox.alpha = 0; 
     trace("success"); 
    } 
    if (DisableCheckBox.selected == false) { 
     myComboBox.alpha = 1; 
     trace("revisible"); 
    } 
} 

在這種情況下,你也應該用else,而不是你的第二個條件,但是。一個else語句在運行時會稍微快一點(因爲它不必檢查第二個條件,如果所有條件都是false,它就會運行else)。不足以引人注意,但如果你這樣做了多次,它就會加起來

+0

還值得注意的是,除非'DisableCheckBox'是一個Singleton或'selected'是一個靜態屬性,否則不應該大寫。所有的對象名稱都應該是小寫的,camelcase。所有類名都應該是大寫,camelcase。 –

1

您的if語句錯誤。 =被分配。您應該使用==或直接在if語句中使用selected

if (DisableCheckBox.selected) { 
    myComboBox.alpha = 0; 
    trace("success"); 
} 
if (!DisableCheckBox.selected) { 
    myComboBox.alpha = 1; 
    trace("revisible"); 
} 
+0

謝謝,你能告訴我怎樣給我的組合框看起來「變灰」嗎? – adaam

+0

您可以嘗試將alpha設置爲'0.5'並將'mouseEnabled'設置爲'false' –

1

如果myComboBox一個影片剪輯,你可以「變灰」按鈕,而不是使用alpha屬性的一種方法是第二幀添加到它的地方是後面的灰色,半阿爾法線盒或類似的效果,你可以在Flash編輯器中更好地控制。

在您的代碼中,您將使用myComboBox.gotoAndStop(2)灰色框或myComboBox.gotoAndStop(1)將其恢復正常。