这里有一个简短的解释,说明我们如何“模拟”Flex中使用纯RS3的RSL系统: loading an RSL without using flex?
但签署的RSL呢?我们可以使用该技术加载SWZ文件吗?他们会被玩家缓存吗?如何在纯AS3项目中“重用”播放器缓存的SWZ?
谢谢! 恩里克。
答案 0 :(得分:2)
签名的SWC(即SWZ)被加载到flash播放器缓存而不是浏览器缓存中。因此,目前只允许使用uber可信代码,目前仅来自Adobe。
预加载?我知道的唯一方法并不是真正的方式,但是说你在Flex应用程序之前有一个信息页面或登录页面,当用户可能通过包含使用与主应用程序相同的RSL的轻量级SWF来读取内容时加载RSL。这是一个骗子,但看到它在带宽最小时使用,并且想要在应用程序首次加载时获得收益。
在播放器之外预先加载任何其他方式我可以看到安全问题。
答案 1 :(得分:2)
好的,这是解决方案(尚未测试,但我确信它有效)
Adobe的AS3参考示例:
// URLRequest,摘要属性:
var myURLReq:URLRequest = new URLRequest();
myURLReq.url = "http://yourdomain/users/jdoe/test01/_rsc/Automated/AssetCaching_rsc/test01/rsl.swz";
myURLReq.digest = "3B0AA28C7A990385E044D80F5637FB036317BB41E044D80F5637FB036317BB41";
var myURLLoader:URLLoader = new URLLoader();
myURLLoader.dataFormat = URLLoaderDataFormat.BINARY;
myURLLoader.addEventListener("complete", onC);
myURLLoad.load(myURLReq);
function onC(e) {
var someLoader:Loader = new Loader();
addChild(someLoader);
someLoader.loadBytes((ByteArray)(myURLLoad.data));
}
因此,我们可以像任何其他SWF一样加载已签名的RSL(.SWZ),但是!我们必须使用URLLoader而不是Loader,并提供摘要属性。 然后我们使用Loader从URLLoader加载byteArray。 签名的SWZ由播放器在内部进行检查,如果它检测到由adobe签名,那么它将被播放器缓存,我们不需要做任何事情。 我认为Flash Player会自动检查,并且在加载任何SWZ之前,如果该SWZ已经被播放器缓存了。
这就是我的全部想法。
如果您想查看更多详细信息,请在FlexCoders中查看我的回复:
http://tech.groups.yahoo.com/group/flexcoders/message/159010