2011-01-10 41 views

Trả lời

9

Mã này sẽ làm các trick:

import flash.text.AntiAliasType; 
import flash.text.TextField; 
import flash.text.TextFieldAutoSize; 
import flash.external.* 
import fl.text.TLFTextField; 
import flash.text.TextFormat; 

import flashx.textLayout.formats.TextLayoutFormat; 
import flashx.textLayout.elements.TextFlow; 


var arabicTextField:TLFTextField = new TLFTextField(); 
arabicTextField.antiAliasType = AntiAliasType.ADVANCED; 
arabicTextField.mouseEnabled = false; 
arabicTextField.selectable = false; 

arabicTextField.direction = flashx.textLayout.formats.Direction.RTL; 

var fmt:TextFormat = new TextFormat(); 
fmt.color = 0xFFFFFF; 
fmt.font = "arialArabic" 
arabicTextField.embedFonts = false; 
arabicTextField.defaultTextFormat = fmt; 
arabicTextField.setTextFormat(fmt); 
+0

arabicTextField.direction = flashx.textLayout.formats.Direction.RTL; Cảm ơn nhiều! – robertp

1

Thêm vào đó, có thể bạn sẽ cần phải bao gồm các phông chữ bạn sử dụng trong thư viện của bạn

+1

Không, bao gồm phông chữ là không cần thiết. –

0

Tôi cũng đã thành công với FlarabySWF - chi phí một số tiền (không alot) nhưng nó thực sự hoạt động khá tốt trong kinh nghiệm của tôi.

+0

Yêu cầu các điều kiện cấp phép Flaraby ..."Là người mua FlarabySWF, bạn có thể sử dụng nó với điều kiện là văn bản bạn muốn chuyển đổi VÀ văn bản được chuyển đổi KHÔNG chứa hoặc insinuates theo bất kỳ cách nào vi phạm Hồi giáo Sharia hoặc chống lại Hồi giáo, bao gồm nhưng không giới hạn : bất kỳ tác phẩm nào mâu thuẫn với Đạo đức Hồi giáo như tình dục hoặc nội dung khiêu dâm, Cờ bạc, bất kỳ thứ gì chống lại tôn giáo hoặc sứ giả/tiên tri ". – chichilatte

0

Nếu bạn không trái ngược với khuôn khổ flex, bây giờ nó bao gồm một thư viện quốc tế đàng hoàng mà nên cho phép bạn làm điều này một cách dễ dàng. Dưới đây là một nơi ở tươm tất để bắt đầu http://devgirl.org/2011/03/15/flex-4-localization/

1

cố gắng để thêm textformat với đắn ngay thẳng

var txtFormat:TextFormat = new TextFormat(); 
txtFormat.align = "right"; 
+0

Cung cấp ảnh chụp màn hình sẽ giúp bạn nhận điểm thưởng :) –

+0

bạn có chắc chắn rằng tính năng này hoạt động để hiển thị chính xác ngôn ngữ RTL không? gây ra tôi nghĩ rằng điều này chỉ làm cho mọi thứ đúng liên kết – clamp

+0

Hãy thử một thành phần swc tên flaraby giúp đỡ trong lang thang RTL –

2

Tôi biết đây là một chủ đề cũ. Nhưng vẫn là đoạn mã hữu ích nhất xung quanh cho Văn bản RTL. Cảm ơn Ellen.

Hãy để tôi thêm một số kinh nghiệm trong mã hóa dành cho iOS trên Flash Builder 4.7 trong thời gian CC:

Flash Builder không xuất xưởng với TLFTextField và các lớp học hỗ trợ của nó cần thiết để hiển thị tiếng Ả Rập và ngôn ngữ RTL khác trên iOS.

Giữa CS6 và CC Adobe thậm chí đã bỏ các lớp đó khỏi Flash Professional. Có lẽ vì lớp TextField tiêu chuẩn đã được cải thiện.

Tuy nhiên, trên RTL iOS và và Ligatures tiếng Ả Rập sẽ không hoạt động khỏi Hộp. Nếu bạn sử dụng lớp TextSield AirSimulator của FlashBuilder sẽ hiển thị chính xác. Không phải nếu bạn chạy cùng một mã trên iOS.

Đoạn kết thúc và trình bao bọc NativeText của nó sẽ hiển thị chính xác nhưng có bất lợi cho văn bản tĩnh.

Bạn có thể nghĩ đến việc giới thiệu lại TLFTextField. Đây là cách bạn có thể làm điều đó:

  • Cài đặt Flash Professional CS6 từ Creative Mây
  • Trong "libs" thư mục con của programfolder bạn sẽ tìm thấy hai SWCs có chứa các lớp cần thiết để sử dụng TLFTextField (!) : TLFRuntime.swc & textLayout.swc
  • Sao chép SWC trong ProjectFolder và bao gồm trong Flash Builder bằng cách mở thuộc tính của dự án -> Đường dẫn xây dựng ActionScript -> Đường dẫn thư viện -> Thêm SWC (hoặc Thêm SWC-Thư mục)

Điều này sẽ làm cho Ellen's c ode hoạt động trên FlashBuilder 4.7 cho iOS với SDK không khí 3.9

Bạn có thể mong đợi hiển thị TextField tiêu chuẩn tiếng Ả Rập và các ngôn ngữ RTL khác một cách chính xác trong các bản phát hành trong tương lai của Air.

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