2012-02-22 37 views
1

我是新來的Flash,並試圖實現在Flash中一個簡單的接觸形式,RTL輸入在Flash中使用AS 2

現在,當用戶在希伯來文輸入它攪亂了秩序,所有的字母都顛倒過來(意思是:「this」變成「siht」) 現在我不能將我的代碼移動到AS3因爲它在一個用AS2編寫的更大的項目中實現。

編輯: 當這種情況不會發生,言命令錯誤,每個詞的最後一個字,而不是前後寫的,任何想法如何解決這個問題呢?

關於我發現的這個話題的所有信息是舊的或談論輸出文本。 我怎樣才能做到這一點?

回答

0

您已經攔截文本字段的onChanged事件,並手動將光標置於新輸入的文本的左側:

myInputField.onChanged = function(field:TextField) { 
    var sel:Number = Selection.getBeginIndex(); 
    Selection.setSelection (sel-1, sel-1); 
}; 
+0

我注意到,只有當文本字段是LTR(我的壞)RTL它只是命令單詞錯誤,每個單詞寫在最後一個單詞之前而不是之後,任何想法如何解決? – 2012-02-23 15:47:03

0

我不得不解決一個類似的任務(老項目不能切換到新組件)。這個問題會讓你陷入困境。我強烈建議使用TLF文本字段和支持RTL的AS3。

不是?讓我們開始吧,然後:

  • 光標僅在左側被投入在角色確實在RTL的unicode範圍(易googleable)。普通字符必須繼續浮動LTR。而且,是的,它可以混合使用。
  • 刪除/退格:應該在RTL單詞周圍反向工作。畢竟,一個你剛輸入的角色總是應該被刪除。這意味着如果您遇到一個LTR詞語,您必須跳轉到另一側。
  • 請輸入:新行從左側開始。當打破RTL線時,左邊的部分必須進入下一行,右邊的部分保留。這在刪除中斷時必須被鏡像爲刪除/退格。
  • L/R光標鍵。除了LTR字樣外,它們也是相反的。
  • 標點符號和空格。它們在rtl字之後被稱爲RTL,在LTR之後被稱爲LTR。
  • 即使所有這些,文本將以錯誤的順序內部保存。 RTL是自動反轉的。這意味着,您必須掃描每個粘貼的文本。哦,並且COPY事件不適用於文本字段。所以從僞造的RTL閃存文本字段進行復制是非常重要的。您保存或存儲到數據庫的所有內容都必須反向。但僅限於RTL部分及其檢測。