签署没有Flex的RSL(纯AS3项目)

时间:2010-09-22 20:05:22

标签: flex actionscript-3 signed rsl

这里有一个简短的解释,说明我们如何“模拟”Flex中使用纯RS3的RSL系统: loading an RSL without using flex?

但签署的RSL呢?我们可以使用该技术加载SWZ文件吗?他们会被玩家缓存吗?如何在纯AS3项目中“重用”播放器缓存的SWZ?

谢谢! 恩里克。

2 个答案:

答案 0 :(得分:2)

签名的SWC(即SWZ)被加载到flash播放器缓存而不是浏览器缓存中。因此,目前只允许使用uber可信代码,目前仅来自Adobe。

预加载?我知道的唯一方法并不是真正的方式,但是说你在Flex应用程序之前有一个信息页面或登录页面,当用户可能通过包含使用与主应用程序相同的RSL的轻量级SWF来读取内容时加载RSL。这是一个骗子,但看到它在带宽最小时使用,并且想要在应用程序首次加载时获得收益。

在播放器之外预先加载任何其他方式我可以看到安全问题。

答案 1 :(得分:2)

好的,这是解决方案(尚未测试,但我确信它有效)
Adob​​e的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