2012-03-22 17 views
5

Chciałbym poprzedzić tę ścianę tekstu, mówiąc: jestem bardzo nowy w tym. Może brakuje mi czegoś oczywistego.Czcionki osadzone nie pojawiające się w tekstowych skryptach actionscripts

Pracuję w Flash CS5 przy użyciu ActionScript 3. Próbuję użyć actionscript do utworzenia pola tekstowego i zapełnienia go tekstem. Wstawiłem czcionkę do mojego projektu za pomocą okna "Osadzanie czcionek". Jednak po uruchomieniu kodu do utworzenia pola tekstowego, jeśli "embedFont = true;", czcionka jest niewidoczna. Kursor wciąż zmienia się po najechaniu na niego, więc wiem, że tam jest. A przynajmniej jego pole tekstowe jest, jak sądzę. Nie ma to wpływu na dynamiczne pola tekstowe z osadzonym tekstem, które już są na scenie.

Próbowałem zmienić format konspektu osadzonych czcionek, ani działać. Próbowałem bezpośrednio osadzić czcionkę za pomocą znacznika "embed" za pomocą actionscript, ale nie działa z CS5 lub nie wiem, co robię. Jak widać w dostarczonym kodzie, próbowałem "zarejestrować" czcionkę, bez powodzenia. Próbowałem użyć:

var font:Font = new screenfont(); //"screenfont" is the name from Embedding Fonts  

var format:TextFormat = new TextFormat(); 

format.font = screenfont.fontName; 

Bez kostki.

Podążyłem za różnymi samouczkami dotyczącymi osadzania i natrafiłem na mnóstwo sprzecznych, mylących informacji. Czytałem kilka różnych tematów dotyczących tego tematu, ale nie znalazłem jeszcze żadnych realistycznych rozwiązań.

Oto prosty wersja mojego kodu, gdzie „screenfont” to nazwa I określony w oknie Osadzanie czcionek:

Font.registerFont(screenfont); 

      //TextFormat 
var listformat:TextFormat = new TextFormat(); 

listformat.align = TextFormatAlign.LEFT; 
listformat.size = 20.8; 
listformat.color = 0x0DAC54; 
listformat.font="Fixedsys Excelsior 3.01"; 


      //TextField 
var photolist:TextField = new TextField(); 
    photolist.x = photos_x; 
    photolist.y = tempY; 
    photolist.width = photos_wdth; 
    photolist.height = photos_hght; 
    photolist.text = photoname; 

    photolist.embedFonts = true; //<--- This freakin' guy! 

    photolist.antiAliasType = AntiAliasType.ADVANCED; 
    photolist.defaultTextFormat=listformat; 
    photolist.selectable = false; 
    photolist.wordWrap = true; 

    mediapage.photos.addChild(photolist); 

Mam nadzieję, że ten zapewnia wyraźny obraz.

Czym dokładnie jest embedowanie w CS5?

+0

Czy zadeklarowałeś wybraną czcionkę w bibliotece SWF? Jeśli tak, czy wybrałeś również glify do osadzenia? – ToddBFisher

+0

Tak, i tak. Sprawdziłem również "eksport dla actionscript" i "eksportuj w ramce 1". – TeaCake

+0

Nie ma nic złego w tym kodzie. Czy próbowałeś użyć innej czcionki? –

Odpowiedz

4

Powinieneś ustawić tekst jako ostatnią czynność. Zatem ta linia photolist.text = photoname; powinna być po wszystkim.

var photolist:TextField = new TextField(); 
photolist.x = photos_x; 
photolist.y = tempY; 
photolist.width = photos_wdth; 
photolist.height = photos_hght; 

photolist.embedFonts = true; 
photolist.antiAliasType = AntiAliasType.ADVANCED; 
photolist.defaultTextFormat=listformat; 
photolist.selectable = false; 
photolist.wordWrap = true; 
photolist.text = photoname;//<-- set text only after applying all formatting and embedding 

mediapage.photos.addChild(photolist); 
+1

Awesome! Właśnie wypróbowałem to i to była rzeczywiście duża część problemu. Okazało się, że było wiele czynników, które mnie wkurzyły. Jedna istota, którą skomentowałem photolist.size = TextFieldAutoSize.LEFT. Innym i większym problemem (który pomógł mi w diagnozowaniu różnych czcionek) było to, że po moich wcześniejszych eksperymentach moje czcionki zostały ustawione na TLF. Jeśli nie masz nic przeciwko pytaniu, jakie są ustawienia Classic i TLF? Czy jest jakiś powód, dla którego nie mogę używać TLF? Czy powinienem się wściekać, że nie mogę używać TLF? – TeaCake