2011-01-08 3 views
0

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

До сих пор я создал 2 массива видеофайлов («[videos]») и текстовые строки («[титры]»). Нажав на одну из кнопок, изменится видео в компоненте 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()), формат изменится. Если я затем попытаюсь вернуться к первому видео, текст будет отформатирован.

Так что мой вопрос: что вызывает это условие и как его обрабатывать?

+0

Вы можете разместить более код? У вас есть проблема с реализацией, и трудно понять, где бы вы не увидели больше своего кода. –

+0

Вы могли решить это? – goliatone

ответ

1

Если TextArea вы используете один из флэш-компонентов, то вам необходимо позвонить:

textCaption.setStyle("textFormat", newFormat); 

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

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

}

+0

Я сделал это следующим образом: var newFormat: TextFormat = new TextFormat(); новыйFormat.color = 0x0000C9; newFormat.size = 18; newFormat.font = "Times" textCaption.setStyle ("textFormat", newFormat); Спасибо – Hippopotamus

1

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

Смежные вопросы