2011-03-16 31 views
0

我注意到一些AS2的奇怪行爲,並在使用createTextField()添加到舞臺的textField中使用字體。這是一個textField,它最初表示Year - 用戶可以輸入一年,點擊ok並且年份被接受,然後textField恢復爲Year。我希望這永遠是一個無襯線字體,如Arial(當然這是不能忽視的困難!)使用Flash AS2時出現的問題embedFonts = true和textField.onSetFocus()一起使用

這裏是我想達到的目標 -

1)當文本框的用戶點擊,這個詞「年「被清除,並且光標閃爍表示可以輸入文本。 2)當用戶單擊確定(並提供一年是一個四位數字)的文本框可以追溯到說「年」(以宋體)

我的代碼 -

this.createTextField("uiYear", 99, 0, 0, 65, 20); 
uiYear.type = "input"; 
uiYear.antiAliasType="advanced"; 
uiYear.restrict = "0-9"; 
// 
var my_fmt:TextFormat = new TextFormat(); 
my_fmt.font = "Arial"; 
my_fmt.size = 12; 
my_fmt.align = "left"; 
// 
uiYear.embedFonts = true; 
uiYear.setTextFormat(my_fmt); 
uiYear.text = "Year"; 
// 
uiYear.onSetFocus = function() { 
    if(uiYear.text == "Year") { 
     uiYear.text = ""; 
    } 
} 
// 
button_ok.onRelease = function() { 
    uiYear.text = "Year"; 
} 

看起來沒問題吧?

什麼我注意到是這樣的 -

當我點擊文本字段字「年」消失,但閃爍的光標犯規節目,我不能文本輸入到文本字段。如果我刪除線 -

uiYear.embedFonts = true; 

...然後它工作正常,守信用「年」消失了,我可以輸入數字到文本框,當我點擊文本字段。因此,在onSetFocus函數被觸發後,嵌入字體似乎可以防止在textField上設置焦點。然而,我現在輸入的文本不是宋體,當我點擊確定按鈕,單詞「年」被替換時,它是以襯線字體 - 如Times或其他。我不想那樣!

同樣,如果我嘗試從我的庫中嵌入字體 - 例如我在庫中有一個新的字體,我使用鏈接標識符year_font導出到動作並更改my_fmt.font = my_font並單擊導出聯動對話框。然後當我點擊textField時,單詞Year會消失,但textField不能被編輯。

如果我只是接受了的onSetFocus引起的問題,並與保持嵌入字體看起來要好得多我有更多的probs去 -

  1. 如果我點擊文本框光標現在這個詞後出現「年」,因爲我已經刪除了onSetFocus函數刪除單詞。因此,如果我通過按退格鍵4次刪除「年份」,出於某種原因光標消失,我無法輸入文本。注意,在本地測試時不會發生這種情況,但在瀏覽器中發佈和運行時,這只是一個問題。
  2. 但是,如果我突出顯示單詞「年」,然後開始輸入,我可以輸入數字好,如果我點擊按鈕確定,單詞年出現在正確的字體。奇怪的是,現在上面的1號行爲不再發生了 - 如果我按刪除刪除單詞年光標停留,我可以再次輸入。 1號似乎只是第一次發生。

任何想法?

感謝

回答

1

我不能回答你的完整的要求,但我有太多經歷了殺死自己,當你打退格鍵,如果你標記文本/做的東西不同不殺自己的文本字段。

這必須是一個錯誤,因爲我們通過將目標玩家從FP8更改爲FP9來解決它。這是爲了一個橫幅,當然我們用最小的共同標準來生產它們,但是這次我們給了它一個贊成有實際作用的東西! :)