У меня есть ComboBox (назовите его cb) на сцене в первом кадре.Я хотел бы установить его стиль, чтобы текстовое поле было выровнено вправо.При запуске событие какого-либо другого компонента сначала отключается, а через некоторое время снова включает ComboBox.
Я использую следующий код для установки стиля (в первом кадре):
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; })
video - это простой компонент, который отправляет событие ON_CHANGE, когда камера инициализируется, и ON_READY, когда камера подключена.После этого кода я даю cb новый DataProvider и присоединяю камеру к видео компоненту, который отправляет событие.
Когда запускается вспышка, стиль не активен, текст выравнивается по левому краю.Когда происходит первое событие, ComboBox отключается.Все еще выровнен.После этого второе событие включает его и примененные стили, оно выравнивается по правому краю.
Я хочу, чтобы оно выравнивалось по правому краю с первого раза.Я попытался отключить / включить компонент из AS, но не сработал, кажется, что нужно немного времени, чтобы применить стиль.
Я также проверил, что стиль установлен, я написал таймер и проследилвыравнивание, но он сказал правильно, поэтому стиль там просто не используется.
Я пытался вручную добавить компонент с addChild из AS, но все равно безуспешно.
Как я могу заставить егоиспользовать стиль?
Спасибо за любую идею!
Среда:
CS5.5
AS3
Flash version: 11.1.102.55
OS: Win XP
Обновление: Я понял, как сделать простую концепцию:
На сцене я бросаю ComboBox (имя экземпляра 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))
}
}
}