2011-12-08 66 views
-1

當我測試電影時出現此錯誤:TypeError:錯誤#1009:無法訪問空對象引用的屬性或方法。創建對象或數組時出現錯誤#1009

我的代碼是:

var pieceArr:Array = new Array(); 
pieceArr[1] = { 
    piece: MovieClip(wRook1.mc), 
    x: 34, 
    y: 526 
} 

var wRook1:Object = new Object(); 
wRook1.mc = new WhiteRook(); 
addChild(wRook1.mc); 
wRook1.mc.x = pieceArr[1].x; 
wRook1.mc.y = pieceArr[1].y; 
wRook1.inPeace = "a1"; 

我試圖使用對象,而不是數組,但我得到了同樣的錯誤。

+0

如果問題的代碼是正確的,你不分配[1]元素*後*您嘗試訪問它? –

+0

感謝您的回答。我猜閃光燈是異步的。 – nikel

+2

不,不是,這是正常的編程語言按照從上到下的順序在語義上執行事物。換句話說,你試圖讀出該數組的內容,然後再進一步向下,你將該數組設置爲一個新的數組對象。所以,在你讀數組的時候,它還沒有被設置,因此,'null'。 –

回答

0

在創建之前,您正在引用pieceArr數組。因此,當您嘗試設置wRook1.mc.xwRook1.mc.y時,您正嘗試獲取尚不存在的內容。你必須在你的代碼的順序更改爲這樣的事情:

var wRook1:Object = new Object(); 
wRook1.mc = new WhiteRook(); 
addChild(wRook1.mc); 

wRook1.inPeace = "a1"; 

var pieceArr:Array = new Array(); 
pieceArr[1] = 
{ 
    // can't reference wRook1.mc before it's created 
    piece: MovieClip(wRook1.mc), 
    x: 34, 
    y: 526 
} 

// can't reference pieceArr before it's created 
wRook1.mc.x = pieceArr[1].x; 
wRook1.mc.y = pieceArr[1].y; 
+0

謝謝你的回答。這工作正常。 – nikel

1

這是因爲pieceArr沒有定義。

而且(即使你早定義pieceArrpieceArr[1]不存在。請注意,您還沒有分配任何東西pieceArr[1]您嘗試存取權限的xy

此代碼將很好地工作了。

var pieceArr:Array = new Array(); 
pieceArr[1] = { 
     piece: null, 
     x: 34, 
     y: 526 
} 

var wRook1:Object = new Object(); 
wRook1.mc = new WhiteRook(); 
addChild(wRook1.mc); 
pieceArr[1].piece = wRook1.mc; 
wRook1.mc.x = pieceArr[1].x; 
wRook1.mc.y = pieceArr[1].y; 
wRook1.inPeace = "a1"; 
+0

感謝您的回答。 – nikel

+0

接受會很好,然後:) –

相關問題