自定义可绑定类和向量的奇怪问题

时间:2010-07-07 15:32:09

标签: flex class vector actionscript-3

我的应用程序中有一个非常奇怪的向量问题。

详细...

我有以下课程。

人,播放机,的PlayerController。

玩家扩展了人物。 Person扩展ObjectProxy以启用绑定。 所以Player类有[Bindable]标签。

PlayerController类包含一个远程对象,调用php方法接收firstname和lastname,当CallResponder从调用中获取结果时,结果处理程序创建一个Player实例。那一刻我试图将玩家对象推送到Vector ..

问题如下。

每次调用push方法时,向量都会填充最后一个创建的玩家,但不仅仅是在向量的末尾。它也取代了其他实例!因此,向量始终包含最新的播放器实例,但在其中的每个位置。 :S

我也尝试过使用数组,结果是一样的。

对我做错了什么的想法?这让我疯狂。 :S

1 个答案:

答案 0 :(得分:1)

我的猜测是,在设置对Player的新实例的引用后,将相同的对象引用推送到向量中,这意味着向量中的所有项都引用同一个对象,该对象始终是最新的对象。我说“猜”因为我没有看到你的代码。你在推动你的向量,局部变量是什么?成员变量?

编辑:根据您的评论,尝试使用局部变量而不是您的成员变量(播放器_)将新的Player对象添加到矢量中:

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

您正在做我怀疑的事情,即向您的向量添加对同一对象的多个引用。由于对象中的所有引用都引用同一个对象,因此更改一个对象会更改向量中的所有条目。每次添加到矢量时,执行上述操作将创建一个全新(且唯一)的Player对象。