2010-07-07 69 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