【问题标题】:Deep cloning using write byteArray not working使用写入 byteArray 进行深度克隆不起作用
【发布时间】:2013-02-27 19:10:18
【问题描述】:

我正在为我的一个类编写一个克隆函数。

        var buffer:ByteArray = new ByteArray();
        buffer.writeObject(this);
        buffer.position = 0;
        var gameblock:* = buffer.readObject();

现在是读取对象的最后一行。我把这三个错误放在一起:

TypeError:错误 #1009:无法访问 null 的属性或方法 对象引用。 TypeError:错误#1034:类型强制失败:不能 将 Object@c60efe9 转换为 model.BlockData。类型错误:错误 #1034: 类型强制失败:无法将 Object@c5141c1 转换为 flash.geom.Matrix.

“this”类包含一个用户定义的类 BlockData 和一个 Point 。错误正在发生。你认为我应该如何克隆这个类?

我确实覆盖了 BlockData 和 point 以确保它们得到正确返回

【问题讨论】:

  • “更好”是让您的班级实现IExternalizable 以改进 ByteArray 序列化,正如 fsbmain 所说,无法复制显示对象

标签: actionscript-3


【解决方案1】:

使用registerClassAlias 方法检查this 答案以获得更好的copy 方法,但请记住,您只能将此方法用于简单的情况,例如文本格式或值对象等数据对象的副本,您@ 987654322@复制DisplayObject及其继承者。

【讨论】:

    猜你喜欢
    • 2011-07-12
    • 1970-01-01
    • 2017-09-17
    • 1970-01-01
    • 2014-03-29
    • 1970-01-01
    • 2019-09-06
    • 2021-12-09
    • 1970-01-01
    相关资源
    最近更新 更多