TextArea文本格式在Flash CS5中不会更改

时间:2011-01-08 12:56:16

标签: actionscript-3 flash-cs5

序言 我正在学习Flash,想要制作一个视频播放器,只需点击“前进”或“后退”按钮即可更改视频和相应的字幕。

到目前为止,我已创建了2个视频文件阵列(“[videos]”)和文本字符串(“[captions]”)。通过单击其中一个按钮,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()),格式将会改变。如果我然后尝试返回第一个视频,现在将格式化文本。

所以我的问题是 - 导致这种情况的原因以及如何处理它?<​​/ p>

2 个答案:

答案 0 :(得分:1)

我怀疑它与TextField的实现方式有关。更改TextField的属性时,有时必须等待一帧,直到应用更改为止。 尝试在实例化TextField时设置defaultTextFormat = newFormat,和/或在文本更改后设置setTextFormat(newFormat)

答案 1 :(得分:1)

如果您使用的TextArea是闪存组件之一,则需要调用:

textCaption.setStyle( "textFormat", newFormat );

您的代码现在看起来像:

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

}