序言 我正在学习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>
答案 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();
}