2011-01-08 6 views
0

Prolog Ich studiere Flash und möchte einen Videoplayer erstellen, mit dem man das Video und die entsprechenden Untertitel mit einem Klick auf "Weiter" oder "Zurück" ändern kann.TextArea Textformatierung ändert sich nicht in Flash CS5

Bisher habe ich 2 Arrays von Videodateien ("[Videos]") und Textstrings ("[Captions]") erstellt. Durch Klicken auf eine der Schaltflächen ändert sich das Video in der FLVPlayback-Komponente sowie der Untertitel-Text in der TextArea.

Allerdings habe ich ein Problem mit der Textformatierung.

Ich verwende die folgenden Funktionen für die Schaltfläche klicken:

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(); 
    } 

Die newFormat ist ein einfaches Textformat-Variable:

var newFormat:TextFormat = new TextFormat(); 

newFormat.color = 0x0000C9; 
newFormat.size = 18; 
newFormat.italic = true; 

ich ausführen playCurrentVideo(), um die Video-Wiedergabe zu starten.

Das Problem Mein Problem ist, dass das Format nur ändert, wenn ich auf die Schaltfläche klicke, aber es wird nicht für den ersten Untertitel angewendet.

Also, für das erste Video bekomme ich einen einfachen Text, mit schwarzer Farbe, nicht kursiv und nicht mit der Größe "18". Wenn ich jedoch auf die Schaltfläche "Weiterleiten" klicke (und damit playCurrentVideo() erneut ausführe), ändert sich das Format. Wenn ich dann versuchen werde, zum ersten Video zurückzukehren, wird der Text nun formatiert.

Also meine Frage ist - was verursacht diese Bedingung und wie damit umzugehen?

+0

Können Sie mehr schreiben Code? Sie haben ein Instanziierungsproblem, und es ist schwer zu erkennen, wo, ohne mehr von Ihrem Code zu sehen. –

+0

konnten Sie das lösen? – goliatone

Antwort

1

Wenn die TextArea- Sie verwenden ein von Flash-Komponenten ist, dann müssen Sie rufen:

textCaption.setStyle("textFormat", newFormat); 

Ihr Code aussehen würde jetzt wie:

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

}

+0

Ich habe es folgendermaßen gemacht: var newFormat: TextFormat = new TextFormat(); newFormat.color = 0x0000C9; newFormat.size = 18; newFormat.font = "Zeiten" textCaption.setStyle ("textFormat", newFormat); Vielen Dank – Hippopotamus

1

Ich vermute, es hat etwas mit der Art, wie TextField implementiert ist, zu tun. Wenn Sie die Eigenschaften eines TextField ändern, müssen Sie manchmal einen Frame warten, bis die Änderungen zutreffen. Versuchen Sie defaultTextFormat = newFormat zu dem Zeitpunkt festzulegen, an dem das TextField instanziiert wird, und/oder setTextFormat(newFormat), nachdem der Text geändert wurde.

Verwandte Themen