2011-01-08 70 views
0

序言 我正在学习Flash,并希望制作一个视频播放器,您可以通过点击“前进”或“后退”按钮来更改视频和相应的字幕。TextArea文本格式在Flash CS5中不会更改

到目前为止,我已经创建了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()),格式将会改变。如果我然后将尝试返回到第一个视频,文本现在将被格式化。

所以我的问题是 - 是什么原因导致这种情况,以及如何处理它?

+0

你能发布更多码?你看起来有一个实例化问题,并且很难在没有看到更多代码的情况下辨别出它的位置。 – 2011-01-09 03:26:30

+0

你能解决这个问题吗? – goliatone 2011-01-19 14:20:47

回答

1

如果您使用的是文本区是闪存组件之一,那么你需要调用:

textCaption.setStyle("textFormat", newFormat); 

您的代码将现在看起来像:

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

}

1

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