2011-01-08 66 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)