2016-09-01 45 views
1

我有一個臉部的AS3 FLA文件。通過播放陣列中不同的眼動動畫片,眼睛隨機移動。代碼在時間軸上。我不斷收到此錯誤:播放隨機動畫片段給出錯誤#1010:一個術語是未定義的並且沒有屬性

TypeError: Error #1010: A term is undefined and has no properties. 
    at TVCR_fla::eyes_4/playEyes() 
    at flash.utils::Timer/_timerDispatch() 
    at flash.utils::Timer/tick() 

的錯誤並不能阻止做它應該的代碼,但我想知道是什麼導致了它。

這是我正在使用的代碼。

stop(); 

var eyeArray:Array = new Array(); 

eyeArray[0] = eyeBlink1; 
eyeArray[1] = eyeBlink2; 
eyeArray[2] = eyeBlink3; 
eyeArray[3] = eyeLeft; 
eyeArray[4] = eyeRight; 
eyeArray[5] = eyeWide; 

var i:int = 0; 

var eyeTimer:Timer = new Timer(100); 

eyeTimer.addEventListener(TimerEvent.TIMER, playEyes); 

function playEyes(event:TimerEvent):void{ 
for(i=0; i<eyeArray.length; i++) 
{ 
    var randomEye:Number = Math.floor(Math.random()*300);   
    eyeArray[randomEye].play(); 
} 
} 

eyeTimer.start(); 
+0

請說明你的目標是什麼。你想要達到什麼目的? – null

回答

2

您的數組eyeArray有6個元素。在這條線上,則可以訪問一個元素:

eyeArray[randomEye].play(); 

確定所述索引的變量是在一行定義:

var randomEye:Number = Math.floor(Math.random()*300); 

這個隨機變量的值是在0和299(含)

這比你的數組長。

從你的問題不清楚你的意圖是什麼或項目的結構是什麼樣子,這使得很難建議修復。

猜想你試圖從每個Movieclip中選取一個隨機幀,它們總共有300幀。要做到這一點,您應該將隨機變量傳遞給您應該調用的gotoAndPlay()而不是play。使用for循環索引中的變量來獲取數組的元素。

+0

這絕對看起來像一個很好的猜測。花一些時間嘗試做這項工作。如果遇到這個錯誤,當我搞亂數組時,我會將跟蹤調用放在整個數組中,以查看我的數組是否和我想的一樣長。 –

+0

就是這樣。數字太高。謝謝你的幫助! – Browntastic

相關問題