我在第一幀的舞臺上有一個組合框(稱爲cb)。我想將它的樣式設置爲與右側對齊的文本字段。在開始時,首先禁用一些其他組件的事件,並在一段時間後重新啓用組合框。未使用Flash AS3組合框樣式
我使用以下代碼來設置風格(第一框架上):
var menuTextFormat:TextFormat = new TextFormat();
menuTextFormat.align = "right";
cb.textField.setStyle("textFormat", menuTextFormat);
cb.setStyle("textFormat", menuTextFormat);
cb.setStyle("disabledTextFormat", menuTextFormat);
video.addEventListener(VideoEvent.ON_CHANGE, function (event) {cb.enabled = okButton.enabled = false;})
video.addEventListener(VideoEvent.ON_READY, function (event) {cb.enabled = okButton.enabled = true; })
視頻是一個簡單的部件,其調度ON_CHANGE事件當相機初始化和ON_READY當相機被安裝。在那段代碼之後,我給cb一個新的DataProvider,並將一個攝像頭連接到調度該事件的視頻組件。
當閃光燈啓動時,風格不活動,文本左對齊。當第一個事件發生時,組合框變爲禁用狀態。仍然左對齊。之後,第二個事件啓用它並應用樣式,它對齊。
我希望它從第一次對齊。我試圖從AS中禁用/啓用組件,但無法工作,似乎需要一點時間來應用樣式。
我也檢查了風格設置,我寫了一個計時器和跟蹤對齊方式,但它說的是正確的,所以風格在那裏只是沒有使用。
我試圖用AS從addChild手動添加組件,但仍然沒有成功。
我該如何強制它使用風格?
感謝您的任何想法!
環境:
CS5.5
AS3
Flash version: 11.1.102.55
OS: Win XP
更新: 我想通了如何做一個簡單的概念:
在舞臺上,我滴個組合框(實例名CB)和庫命名爲一個符號foobar(實例名稱視頻)。在第一幀寫入如下代碼:
import fl.data.DataProvider;
import flash.events.Event;
import flash.text.TextFormat;
import fl.controls.ComboBox;
var menuTextFormat:TextFormat = new TextFormat();
menuTextFormat.align = "right";
cb.textField.setStyle("textFormat", menuTextFormat);
cb.setStyle("textFormat", menuTextFormat);
cb.setStyle("disabledTextFormat", menuTextFormat);
video.addEventListener(Event.ACTIVATE, function (event) {cb.enabled = false;})
video.addEventListener(Event.COMPLETE, function (event) {cb.enabled = true; })
var arr:Array = new Array();
for (var i=0; i<10 ; i++)
arr.push({label:"asdfasdf", data:i})
cb.dataProvider = new DataProvider(arr);
video.start()
之後,創建foobar.as並寫入以下內容:
package {
import flash.display.MovieClip;
import flash.events.Event;
import flash.utils.Timer;
public class foobar extends MovieClip {
private var myTimer:Timer = new Timer(3000);
public function start() {
dispatchEvent(new Event(Event.ACTIVATE))
myTimer.addEventListener("timer", timerHandler);
myTimer.start();
}
public function timerHandler(evt:Event) {
myTimer.stop()
dispatchEvent(new Event(Event.COMPLETE))
}
}
}
當第一個事件發生時,組合框變爲禁用狀態,寫入menuTextFormat.align =「right」; – 2012-01-19 09:29:48
沒有工作,但感謝您的建議!奇怪的是,在第一次禁用/啓用事件之後,它在所有後續事件中對齊,所以它似乎只是第一次不使用該風格。 – face 2012-01-19 11:23:20
你可以提供一些代碼來顯示你是如何啓用和禁用組合框,因爲我正在創建一個例子,它適用於我。 – 2012-01-19 11:33:44