2011-04-13 75 views
0

我有一個問題,這個工程然後在「和」,它死了,給我一個錯誤actionscript錯誤?

TypeError: Error #1009: Cannot access a property or method of a null object reference. at Untitled_fla::MainTimeline/frameLooper() at flash.utils::Timer/_timerDispatch() at flash.utils::Timer/tick()

CODE

var string:String = "Welcome to PuppetWeb Inc\nMy name is Steve and I will be your host for this presentation!\n...\nOkay I think it is ready, let's go!"; 
var myArray:Array = string.split(""); 
var timer : Timer = new Timer (100, myArray.length); 
timer.addEventListener (TimerEvent.TIMER, frameLooper); 
timer.start(); 

function frameLooper(event:Event):void { 
    if(myArray.length > 0) { 
     text1.appendText(myArray.shift()); 
    }else{ 
     removeEventListener(Event.ENTER_FRAME, frameLooper); 
    } 
} 

它爲開始,然後就死在和,和那麼它會顯示大約50次的錯誤並重新啓動。

任何幫助?

+0

這太長時間,因爲我已經使用AS3自信地提供答案,但不應該說是'timer.removeEventListener(Event.ENTER_FRAME,frameLooper);',而不是'removeEventListener(事件。 ENTER_FRAME,frameLooper);'? – bgw 2011-04-13 23:33:02

回答

2

我想這是寫在時間軸中的一個關鍵幀代碼,所以我的猜測是,你的文本框消失出於某種原因,很可能是某種關鍵幀動畫。

這也是有些奇怪,當數組是空的,你是去除Event.ENTER_FRAME聽衆,而不是TimerEvent.TIMER

+1

那麼,再加上他不會從定時器中刪除聽衆,他也會添加它。 – 2011-04-13 23:37:21

0

爲什麼不使用string.charAt()?

var string:String = "Welcome to PuppetWeb Inc\nMy name is Steve and I will be your host for this presentation!\n...\nOkay I think it is ready, let's go!"; 
var timer : Timer = new Timer (100, string.length); 
timer.addEventListener (TimerEvent.TIMER, frameLooper); 
timer.start(); 

function frameLooper(event:TimerEvent):void { 
    text1.appendText(string.charAt (event.target.currentCount-1); 
} 
+0

順便說一句,你不需要刪除那個ENTER_FRAME監聽器,因爲你永遠不會添加一個。 ;) – weltraumpirat 2011-04-13 23:31:21

1

最後,您試圖從隱式「this」中移除偵聽器。你的語句相當於:

this.removeEventListener(Event.ENTER_FRAME, frameLooper); 

但「這」是將主時間軸的引用(如果這是主時間軸幀腳本),或包含此代碼的實例的引用。這的Timer實例,參考這是你需要的東西:

event.target.removeEventListener(TimerEvent.TIMER, frameLooper); 
+2

從定時器中刪除一個enter_frame監聽器是沒有意義的。 – grapefrukt 2011-04-13 23:33:37

+0

難道你不能只是利用閉包,並保存處理'event.target'的工作嗎? – bgw 2011-04-13 23:34:52

+1

@ grapefrukt-我編輯它也改變了事件類型,我讀了正確的過去(看到我期望看到的,而不是在那裏!)謝謝。 – 2011-04-13 23:36:09

0

躋身於其他職位規定的所有其他問題都沒有停止的時間。
不要忘記timer.stop();