TextArea форматирование текста не меняется в Flash CS5 - PullRequest
0 голосов
/ 08 января 2011

Пролог Я изучаю Flash и хочу создать видеоплеер, в котором вы можете менять видео и соответствующие субтитры, нажимая кнопку «вперед» или «назад».

На данный момент я создал 2 массива видеофайлов ("[видео]") и текстовых строк ("[подписи]"). При нажатии на одну из кнопок изменяется видео в компоненте FLVPlayback, а также текст субтитров в TextArea.

Однако у меня проблема с форматированием текста.

Я использую следующие функции для нажатия кнопки:

   function playNextVideo():void
   {
   if (currentVideo < videos.length-1)
    {
    currentVideo++;
    playCurrentVideo();
    }
   }

   function playCurrentVideo():void
   {
    textCaption.textField.defaultTextFormat = newFormat;
    textCaption.textField.text=captions[currentVideo];
    myVideo.source = videos[currentVideo];
    myVideo.play();
   }

newFormat - это простая переменная TextFormat:

var newFormat:TextFormat = new TextFormat();

newFormat.color = 0x0000C9;
newFormat.size = 18;
newFormat.italic = true;

Я запускаю playCurrentVideo (), чтобы начать воспроизведение видео.

Проблема Моя проблема в том, что формат изменяется только при нажатии кнопки, но он не применяется для первого субтитра.

Итак, для первого видео я получаю простой текст, с черным цветом, не курсивом и не с размером "18". Однако, если я нажму на кнопку «вперед» (и, таким образом, снова выполню playCurrentVideo ()), формат изменится. Если я попытаюсь вернуться к первому видео, текст будет отформатирован.

Итак, мой вопрос - что вызывает это состояние и как с ним справиться?

Ответы [ 2 ]

1 голос
/ 10 января 2011

Если используемая вами TextArea является одним из компонентов Flash, вам нужно позвонить:

textCaption.setStyle( "textFormat", newFormat );

Ваш код теперь будет выглядеть так:

 function playCurrentVideo():void {
textCaption.setStyle( "textFormat", newFormat );
textCaption.text=captions[currentVideo];
myVideo.source = videos[currentVideo];
myVideo.play();

}

1 голос
/ 10 января 2011

Я подозреваю, что это как-то связано с реализацией TextField. При изменении свойств TextField иногда приходится ждать один кадр, пока изменения не вступят в силу. Попробуйте установить defaultTextFormat = newFormat во время создания экземпляра TextField и / или setTextFormat(newFormat) после изменения текста.

...