【问题标题】:SharedObject and Dictionary problems in Flash BuilderFlash Builder 中的 SharedObject 和 Dictionary 问题
【发布时间】:2013-04-29 22:50:38
【问题描述】:

我正在使用 Flash Builder 创建一些使用 SharedObjects 的动作脚本代码。 第一个问题:如何在 Flash Builder 中删除我的本地 SharedObject?我正在调试我的程序,并且 SharedObject sems 在运行之间持续存在。我想在没有 SharedObject 存储我的数据的情况下重新开始。我该如何摆脱它?

另外,在我的 SharedObject 中,我使用了 mySharedObject.data["mykey"] 来存储字典。此字典将具有 MyCustomClass 的字符串键和值。问题是,当我稍后尝试遍历此 Dictionary 的值时,我收到错误 #1034 cannot convert object to type MyCustomClass。似乎我可以将 MyCustomClass 类型的项目放入此字典中,但我无法将该项目作为对象以外的任何内容取出。

知道出了什么问题吗?

【问题讨论】:

    标签: actionscript-3 local-shared-object


    【解决方案1】:

    这些本质上是两个问题,因此应该作为两个问题提出。无论如何,我会在这里回答它们,但仍然希望您将它们分成两部分(可能在此处留下指向另一部分的链接以供参考):

    本地共享对象,对于跨运行的持久性非常有用。然后有SharedObject.clear()根据需要清除状态。

    对于你的第二个问题,共享对象的serialize 你的对象到AMF,这样它就可以写入磁盘或使用RTMP 通过网络发送。现在,您的自定义类在AMF 中不能真正成为serialized。实际发生的是公共属性(以及动态属性,如果类被声明为动态)被序列化到结构中。所以,公共数据被存储了......但它本质上是一个通用的Object。 为了解决这个问题,你可以有一个

    public static readFrom(object:Object):MyCustomClass
    类型函数,它将从传递的对象中读取属性以构造表示该信息的
    new MyCustomClass

    有一些方法可以向播放器注册您的类以存储在 SharedObject 中(请参阅here)...但是您需要确保反序列化该数据的代码也知道该类。

    【讨论】:

      【解决方案2】:

      要使类可用于转换,请在全局初始化中使用 registerClassAlias() 调用,并使用 MyCustomClass 及其完全限定名称作为参数。 The manual. 说你的自定义类是foo.bar.TheClass,你写:

      registerClassAlias('foo.bar.TheClass',foo.bar.TheClass);
      

      为了放弃旧的 SO,请使用 delete 调用 so.data["mykey"] 并执行 so.flush()。编辑:SharedObject.clear() 更好。

      【讨论】:

        【解决方案3】:

        1/ 持久化是 SharedObject 的特性之一。要清理其所有内容,您需要调用clear 方法。

        var shareObject:SharedObject = SharedObject.getLocal('justatest'); 
        shareObject.data.test = 'test';
        trace(shareObject.data.test)
        shareObject.clear();
        trace(shareObject.data.test)
        

        输出

        test
        undefined
        

        2/ SO中存储复杂数据类型需要使用flash.net.registerClassAlias(example here)

        【讨论】:

          猜你喜欢
          • 2011-06-07
          • 1970-01-01
          • 2014-07-14
          • 2012-05-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多