2014-10-31 22 views
0

試圖創建,在0至3秒的速度不斷加快旋轉兒童3D形狀,我用下面的腳本AE JavaScript的發現層對象提供無時

if (time < 3) 
    Math.pow(time, 2)*30; 

這給了我下面的錯誤

After Effects的警告:型層的對象發現在需要一個號碼, 陣列,或物業

表達禁用。

發生錯誤在0行

小樣: '主'

層:15( '藍')

屬性: 'Y' 旋轉

小樣名稱,圖層名稱和屬性名稱都是有效的。他們指向我正在編輯的財產。 但是,讓我感到困惑的是,我通過使用下面的代碼來解決這個問題。

ctime = time; 
if (ctime < 3) 
    Math.pow(ctime, 2)*30; 

該代碼現在按預期工作,我不知道爲什麼。

+0

發佈您的完整代碼,罪魁禍首是不在眼前。另外你似乎沒有使用'Math.pow'的結果。 – Ultimater 2014-10-31 03:41:19

+0

@Ultimater是完整的代碼。這是After Effects中使用的一個表達式snipplet,它使用最後一行的返回值作爲寫入scipt的任何對象的輸入,在這種情況下,這是一個名爲Blue的圖層的Y旋轉。 – dare0021 2014-10-31 03:46:44

+0

@Ultimater我半信服這個問題與AE(或其實現JS)有關,因此標籤和標題。 – dare0021 2014-10-31 03:47:51

回答

1

如果條件不成立,那麼兩者會有所不同,因爲將不會使用最後一條語句。
嘗試:(time < 3)?Math.pow(time, 2)*30:time;

+0

剛剛測試過,我可以確認AE正在使用ctime = time;作爲第二個代碼的值,如果if子句失敗。將使用與其他0代碼;爲了可讀性。謝謝。此外,現在我感到很蠢。 – dare0021 2014-10-31 04:00:57

1

Math.pow(time^2*30);簡直是不好的代碼。 Math.pow期望兩個參數,你只給了它一個。另外^是一個按位運算符,在JavaScript中沒有能力提升運算符,您需要使用Math.pow。