2010-07-07 66 views
1

我的應用程序中有一個很奇怪的向量問題。自定義可綁定類和向量的奇怪問題

詳細信息...

我有以下類。

Person,Player,PlayerController。

玩家延伸人。 Person擴展ObjectProxy以啓用綁定。 所以Player類具有[Bindable]標籤。

PlayerController類包含一個遠程對象,它調用一個php方法來接收firstname和lastname,當CallResponder從調用中獲取結果時,結果處理程序將創建一個Player實例。在那一刻,我試圖給玩家對象推入一個Vector ..

的問題如下。

每次push方法被調用時,矢量被填充之前創建,但不只是在向量結束最後的球員。它也取代了其他實例!所以矢量總是包含最近的播放器實例,但是它在每個位置。 :S

我也試圖與數組做,結果都是一樣的。

什麼,我做錯了什麼想法?這讓我瘋狂。 :S

回答

1

我的猜測是,你正在設置,提及Player的新實例後推相同的對象引用到您的載體,這意味着所有在您的載體的項目指向同一個對象,這始終是最新的對象。我說「猜測」,因爲我沒有看到你的代碼。你在推動你的向量,一個局部變量?一個成員變量?

編輯:基於下面您的評論,請嘗試使用一個局部變量添加新的播放器對象的矢量,而不是從你的成員變量(player_):

var newPlayer:Player = new Player(); 
newPlayer.firstName = results[firstName]; 
newPlayer.lastName = results[lastName]; 
players_.push(newPlayer); 
player_ = newPlayer; 

你在做什麼,我懷疑,這將多個引用添加到您的矢量的同一個對象。由於對象中的所有引用都引用同一個對象,因此更改一個對象會更改向量中的所有條目。執行上述操作將在您每次添加到矢量時創建一個全新的(和唯一的)Player對象。

+0

player實例是PlayerController類中的一個私有變量。 我試過把它推到一個私人的類裏面,得到奇怪的結果。 我也嘗試過將它推向包含控制器的組件上的向量,同樣的事情正在發生。 所以在結果處理程序的代碼看起來是這樣的 player_.firstName =結果[名字]; player_.lastName = result [lastName]; players_.push(player_); 我在做什麼,我不應該?或者我錯過了什麼? :S – 2010-07-07 22:14:46

+0

查看我上面的編輯。這應該可以解決你的問題。 – 2010-07-07 22:41:07

+0

我不能夠感謝你!你從一堆麻煩中拯救了我,因爲我在過去的3-4天裏一直在尋找答案,我無法弄清楚。 我想在編輯答案時在函數中創建一個新對象。 :D – 2010-07-07 23:15:19