2012-03-22 35 views
5

Tôi muốn mở đầu bức tường văn bản này bằng cách nói, tôi rất mới ở đây. Tôi có thể thiếu một cái gì đó hiển nhiên.Phông chữ nhúng không xuất hiện trong ActionScript đã tạo ra các trường văn bản

Tôi đang làm việc trong Flash CS5 với Actionscript 3. Tôi đang cố sử dụng ActionScript để tạo một trường văn bản và điền văn bản vào đó. Tôi đã nhúng phông chữ của tôi trong dự án của tôi bằng cách sử dụng cửa sổ "Font Embedding". Tuy nhiên, khi mã để tạo ra các trường văn bản được chạy, nếu "embedFont = true;", phông chữ là vô hình. Con trỏ vẫn thay đổi khi di chuột qua nó, vì vậy tôi biết nó ở đó. Hoặc ít nhất là hộp văn bản của nó, tôi đoán vậy. Các vùng văn bản động với văn bản nhúng đã có trên sân khấu dường như không bị ảnh hưởng.

Tôi đã thử thay đổi định dạng phác thảo phông chữ được nhúng, không hoạt động. Tôi đã thử trực tiếp nhúng phông chữ với thẻ "nhúng" thông qua ActionScript, nhưng nó dường như không làm việc với CS5, hoặc tôi không biết những gì tôi đang làm. Như bạn thấy trong mã được cung cấp, tôi đã thử "đăng ký" phông chữ, không thành công. Tôi đã thử sử dụng:

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

var format:TextFormat = new TextFormat(); 

format.font = screenfont.fontName; 

Không súc sắc.

Tôi đã làm theo một số hướng dẫn khác nhau về cách nhúng và gặp phải nhiều thông tin xung đột, khó hiểu. Tôi đã đọc một vài bài viết khác nhau liên quan đến chủ đề này, nhưng chưa tìm thấy bất kỳ giải pháp khả thi nào.

Dưới đây là một phiên bản đơn giản của mã của tôi, trong đó "screenfont" là tên tôi đã chỉ định trong cửa sổ Nhúng Fonts:

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

Tôi hy vọng điều này cung cấp một bức tranh rõ ràng.

Vậy, cách nhúng chính xác hoàn thành trong CS5?

+0

Bạn đã khai báo phông chữ đã chọn trong thư viện của swf chưa? Nếu vậy, bạn đã chọn glyphs để nhúng là tốt? – ToddBFisher

+0

Có, và có. Tôi đã kiểm tra 'xuất khẩu cho actionscript' và 'xuất khẩu trong khung 1' là tốt. – TeaCake

+0

Không có gì sai với mã. Bạn đã thử sử dụng phông chữ khác chưa? –

Trả lời

4

Bạn nên đặt văn bản làm điều cuối cùng bạn làm. Vì vậy, dòng này photolist.text = photoname; nên được sau khi tất cả mọi thứ khác.

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

Tuyệt vời! Chỉ cần cố gắng mà ra, và nó thực sự là một phần lớn của vấn đề. Hóa ra có một số yếu tố làm tôi khó chịu. Một là tôi đã nhận xét ra photolist.size = TextFieldAutoSize.LEFT. Sự cố khác và lớn hơn (đề xuất thử các phông chữ khác nhau của bạn đã giúp tôi chẩn đoán) là phông chữ của tôi đã được đặt thành TLF sau thử nghiệm trước đây của tôi. Nếu bạn không nhớ tôi hỏi, các thiết lập Classic và TLF là gì? Có một số lý do tôi không thể sử dụng TLF? Tôi có nên điên về điều đó tôi không thể sử dụng TLF? – TeaCake

Các vấn đề liên quan