14

我有一个使用 Remote SharedObjects 的应用程序,我看到一些奇怪的行为。我正在使用 Flash Builder 在 AS3 中编写一个 ActionScript 应用程序并连接到 Wowza Media Server 2。

我的应用程序运行良好,但我现在正尝试使用 FlexUnit 为其编写单元测试。我的单元测试涉及创建到同一个远程 SharedObject 的多个连接,并确保我正确获取更新。一切似乎都运行良好,除了我没有收到任何带有“删除”信息的 SyncEvent.SYNC 事件。当我在单独的选项卡中独立运行我的应用程序时,甚至在同一页面中嵌入单独的 swf 时,它都可以正常工作。出于某种原因,虽然它在单元测试中不起作用。我还发现,如果我在同一个 SWF 中使用 Loader 加载 swf,那么我会得到相同的行为。在我看来,同一个 SharedObject 的多个倍数在同一个 SWF 中的行为方式有些奇怪。

任何人都知道如何解决这个问题?这是一个已知的问题?我疯了吗?:)

将不胜感激任何帮助!

4

3 回答 3

0

在我使用诸如 Cairngorm 之类的编码框架并使用多个远程对象连接到 AMFPHP 开发一些 Flex 应用程序之前,我也遇到过这个问题。

当时我想解决的问题是确保这些远程对象不会同时被触发。那是试图制作一些所谓的“顺序链”来一个接一个地触发这些远程对象。

为了实现这一点,如果从头开始可能会很困难,您可以考虑使用那些现代的 ActionScript 框架 2.0 来帮助您(例如 SWIZ 或 Robotlegs)。这可能在一开始就太复杂而无法处理。我建议您可以只放置要由框架处理的远程对象部分,同时保持其他内容不变。

于 2011-10-19T08:06:26.697 回答
0

要获取 sharedObject 实例,您使用的是静态方法SharedObject.getRemote()。我相信此方法将始终为给定名称返回相同的实例(并且如果持久性参数具有相同的值)。

mySO = null当您从应用程序中删除 SharedObject( )并在垃圾收集器完成其工作之前重新实例化它时,您可能会遇到同样的问题)。

这种行为对我来说很有意义,但有时我必须承认这是一个问题。无论如何,在调试会话中测试应该很容易(看看你的对象实例编号)。

现在谈论单元测试,你在测试什么?SharedObjects 行为?如果是这样,我相信这里有一些误解。如果您真的想测试这种行为(我会对背后的原因感兴趣),那么我猜您将需要一些更复杂的测试来运行两个单独的应用程序。

希望能帮助到你!

于 2013-06-06T03:13:37.157 回答
0

在我们的项目中,我们对删除有类似的行为。当我们调用 so.close() 时。然后删除共享对象中的一些键。然后再次连接 SO - 它仍然可以看到已删除的密钥。

解决方法:不要关闭 SO 或使用某些常量值(例如 -2)更新已删除的键以将它们标记为已删除。

使用了 Wowza 3。

于 2014-06-10T14:44:17.860 回答