2012-03-23 76 views
1

我想改變計時器滴答在警報文本,但沒有任何變化,見下面例子:如何更改文本在警報中的Flex

private var alert:Alert; 
private var timer:Timer = new Timer(1000, 0); 

private function init(){ 
    timer.addEventListener(TimerEvent.TIMER, onTimerTick); 
    timer.start(); 
    alert = Alert.show("Logout in "+ 60 +" seconds","",3); 
}  

private function onTimerTick(event:TimerEvent):void{ 
    alert.text = "Logout in "+(60-timer.currentCount)+" seconds"; 
} 

附:標題被這種方式覆蓋。

預先感謝任何幫助

回答

1
private var uiText:UITextField; 

private function init():void{ 
    timer.addEventListener(TimerEvent.TIMER, onTimerTick); 
    timer.start(); 
    alert = Alert.show("Logout in "+ 60 +" seconds","",3); 
    var child:DisplayObjectContainer = alert.getChildAt(0) as DisplayObjectContainer; 
    uiText = child.getChildAt(0) as UITextField; 
    uiText.text; 

}  

private function onTimerTick(event:TimerEvent):void{ 
    (timer.currentCount > 60) ? [timer.stop(), alert.parent.removeChild(alert)] : void; 
    uiText.text = "Logout in "+(60-timer.currentCount).toString()+" seconds"; 
} 

做一些這樣的事情會有所幫助。

+0

謝謝你的解決方案。它真的幫助了我。 – latromi 2012-03-23 15:44:43

1

好吧,所以這相當難看。

alert.mx_internal::alertForm.mx_internal::textField.text = "..."; 

會讓你更新文本。這並不漂亮,但它的工作原理。

+0

請注意,如果您使用此方法,則必須先導入命名空間,然後再訪問它,如下所示: 'import mx.core.mx_internal;' – 2015-08-21 04:42:07

相關問題