2012-10-25 47 views
1

我只用了三天的ActionScript 3,所以我是一個重要的新手,但我在我的大部分時間都使用了其他幾種語言。語法錯誤:在leftbracket之前期待分號

我在框架頂層的一個下面的代碼:

var level:Array = new Array(); 
var level[0] = new Object(); 

我收到以下錯誤:

Scene 1, Layer 'levels', Frame 1, Line 2 
1086: Syntax error: expecting semicolon before leftbracket. 

我已經看了許多實例似乎在做我正在做同樣的事情,我也嘗試過單獨定義對象,然後將它添加到數組中,併發生相同的錯誤。我也在尋找答案,但我發現的所有問題都與這種情況有點不同。預先感謝任何幫助或鏈接。

+0

基本上,你已經聲明瞭'level'變量的兩倍。編譯器應該拋出一個衝突錯誤,但相反,儘管最好關閉一個分號。 Flash Professional不是一個很好的代碼編輯器。如果您想要一個更可接受的代碼編輯器,請查看FlashDevelop(僅限PC)或Flash Builder(Cro $$平臺)。 – TheDarkIn1978

+0

我有點尷尬,因爲在發佈之前我應該​​注意到我的錯誤,並且在發佈之後我發現了它,但希望所有在這裏發佈的優秀答案都能幫助其他人。特別感謝pst爲我教授一些新的語法。 –

+0

不要忘記接受pst的答案作爲正確答案。 – TheDarkIn1978

回答

5

語法/語法生產

var level[0] = new Object(); 

是無效的。

var生產期望一個簡單的標識符,而不是一個表達式。解析器大致上試圖將產品視爲var level;[0] = ..;(但由於缺少分號而失敗,並且因爲[0] = ..;也是無效產品而無法使用)。

嘗試:

var level:Array = new Array(); 
level[0] = new Object(); // no "var" here so it is a valid grammar production 

,或者更簡潔:

var level:Array = [{}]; // using Array and Object literal notations 

爲ANTLR產生式規則請參見AS3.g。或者,對於ECMAScript(從中派生AS),請參閱12.2 Variable Statement from ES5-Annotated並注意它需要一個「標識符」,後跟一個可選的初始化程序(=)或另一個聲明(,)或語句結尾(;)。

相關問題