Yur*_*kii 5 apache-flex flash erlang amf flex3
AMF3规范定义了所谓的"参考表"的使用(参见本规范的第2.2节).
我在我在Erlang中开发的AMF3编码器/解码器中实现了这种行为,但对Flash API不是很有经验,我很难找到在将对象序列化为AMF3时如何轻松强制Flash使用这些引用表; 例如,如果我使用ByteArray,它似乎只是重复完整的对象编码
var ba:ByteArray = new ByteArray();
ba.writeObject("some string1");
ba.writeObject("some string1");
# =>
# <<6,25,115,111,109,101,32,115,116,114,105,110,103,49,
# 6,25,115,111,109,101,32,115,116,114,105,110,103,49>>
Run Code Online (Sandbox Code Playgroud)
(这显然是重复).
但是,如果这两个字符串在一个writeObject调用中,它似乎确实使用引用:
ba.writeObject(["some string1", "some string1"]);
# => <<9,5,1,6,25,115,111,109,101,32,115,116,114,105,110,103,49,6,0>>
Run Code Online (Sandbox Code Playgroud)
套接字似乎表现得一样.
那么,我可以在Flash代码中使用引用表吗?(假设我在Flash应用程序和服务器之间可能有非标准协议)
谢谢!
我认为区别在于,在第一个示例中,您编写了两个字符串文字。在第二个示例中,您正在编写一个引用两个字符串的数组(或 Adobe 规范中的复杂对象)。因此,如果您从对象或数组引用字符串,它会将其写入引用表中。
这不一定是强制执行它的方法,但内置于闪存的 AMF 序列化器会以这种方式序列化对象似乎是合乎逻辑的,因此它可能是获得您想要的行为(参考表字符串)的可靠方法。
我希望这对您有帮助!
| 归档时间: |
|
| 查看次数: |
1215 次 |
| 最近记录: |