2011-12-12 54 views
0

我是新來的as3。 我正在嘗試使用Timer類創建一個非常簡單的倒計時Flash as3 - 使用定時器更新動態文本的Movieclip。沒有更新

  1. 我有movieclip,它有一個dynamic text元素。
  2. movieclip使用包它的代碼
  3. 的包,如果明顯是從MovieClip類
  4. 我有一個timer,用於更新動態文本字段每秒的。

調試代碼時,我發現計時器工作正常。它更新動態文本字段的值。

但是,由於某種原因,它本身不會更新。我在這裏錯過了什麼?

+1

請問您可以粘貼一段代碼嗎? – Benny

回答

2

如果你的計時器是「工作」(意思是你可以跟蹤它,並看到它打印出的日誌值與預期的一樣),那麼這很可能是你在文本字段中設置字體的方式的問題。
如果您確定文本字段的實例名稱正在被正確調用(追蹤對象以確保Flash知道它,如... trace(myTextField); //(不應該爲null或undefined,前提是你已經將你的文本字段的實例名稱設置爲「myTextField」

如果這一切都正確,那麼它幾乎可以肯定是字體嵌入問題,這是CS4>真的搞錯了。文本字段並選擇一種字體,然後單擊嵌入字體。嵌入字體並給出它自己的名稱(「myArialBold」)後,您需要在可用字體列表中找到* myArialBold(在屬性窗格中,而不是在字體對話框中)並選擇您的嵌入字體。

它沒有任何理性意義,因爲當你在嵌入對話框時,你覺得你已經選擇了字體,但事實上,這就是你將字體嵌入到環境中的地方,它實際上並不需要直到您從所有字體的下拉列表中選擇它(現在它也將朝向頂部,在所有自定義嵌入字體的居住線之上)。

好處是,它現在將在這個項目的持續時間,你可以選擇它的任何文本字段(並不需要再次嵌入)。

不利的一面是,如果您曾經刪除嵌入但忘記更改任何文本字段中的關聯,則Flash每次打開該項目時都會抱怨正在尋找的字體丟失,並且您會撕掉每一個頭發在你的頭上尋找這個文本字段的位置。在一個大型項目中,我看到這導致人們自殺。很傷心。

如果不行,我們需要看到更多的代碼:)的

+0

擰上了狗狗。哈哈哈..但是這是一個人爲的困擾,花了我10個小時才弄清楚,很高興我不是唯一一個:D –

+0

是的......我失去了相似的時間,因爲我偶然發現了這一點,似乎儘快我下載了更新。從來沒有人見過這種字體機制......這是痛苦。 –

2

沒有比這個基本的測試沒有更給它...其他問題可能與文字做格式化,但就Timer而言,它並沒有超出這個範圍。

如果您是AS3的新手,請嘗試將您的應用程序分解爲更小的區塊,以查明它的碎片位置...

private var textfield:TextField = new TextField(); 
private var increment:int; 
private var timer:Timer = new Timer(1000); 

private function init():void 
{ 
    addChild(textfield); 

    timer.addEventListener(TimerEvent.TIMER , updateText); 
    timer.start(); 
} 

private function updateText(event:TimerEvent):void 
{ 
    increment++; 
    textfield.text = increment.toString(); 
} 
+0

請注意,正如所寫的那樣,您沒有對計時器的引用,所以在某些時候它可能會收集垃圾,導致您的計時器神祕地停止工作。 –

+0

同意...這將做一個快速測試。編輯答案! – PatrickS