2012-08-15 32 views
1

我試圖啓用後立即更改組合框的文本。但是,直到函數被第二次調用(在這種情況下,再次按下按鈕時),文本纔會更新。函數中的trace()表明文本屬性第一次發生更改,但直到第二次調用此函數時,更改纔在屏幕上顯示。組合框文本屬性只更新上第二個函數調用

這是一個測試情況下,當粘貼到Flash CS5新項目的第一幀應說明問題:

import flash.events.Event; 
import fl.controls.Button; 
import fl.controls.ComboBox; 

stop() 

var btn_test:Button = new Button() 
var cb_test:ComboBox = new ComboBox() 

this.addChild(btn_test) 
this.addChild(cb_test) 

btn_test.x = 100 
cb_test.enabled = false 

btn_test.addEventListener(MouseEvent.MOUSE_DOWN, setText) 

function setText(evt:Event) 
{ 
    cb_test.enabled = true 
    cb_test.textField.text = "foo" 
    trace(cb_test.textField.text) 
} 

回答

2

也許你可以試試UIComponent.validateNow()方法。由於fl.controls.UIComponent決定緩存屬性更改,有時過度反應,所以你可以嘗試強制它渲染cb_test.validateNow();

+0

謝謝,當'cb_test.validateNow()'放置在啓用comboBox和設置文本之間。 – Strigoides 2012-09-08 10:22:26

相關問題