0

这里有一个简短的解释,我们如何用纯 AS3“模拟”Flex 中使用的 RSL 系统: 在不使用 flex 的情况下加载 RSL?

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

谢谢!恩里克。

4

2 回答 2

2

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

用于预加载?我知道的唯一方法不是真正的方法,但是假设您在 Flex 应用程序之前有一个信息页面或登录页面,当用户可能正在阅读某些内容时,通过包含一个使用与您的主应用程序相同的 RSL 的轻量级 SWF 来加载 RSL。它是一种作弊,但在带宽最低并且希望在应用程序首次加载时获得收益时使用它。

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

于 2010-09-22T22:10:12.577 回答
2

好的,这是解决方案(尚未测试,但我很确定它有效)
来自 Adob​​e 的 AS3 参考的示例:
//URLRequest,digest 属性:

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 由 Player 内部检查,如果检测到是 adobe 签名的,则会被 Player 缓存,我们不需要做任何事情。我认为 Flash Player 会在加载任何 SWZ 之前自动检查该 SWZ 是否已被播放器缓存。

这就是我想的。

如果您想查看更多详细信息,请查看我在 FlexCoders 中的回复:http:
//tech.groups.yahoo.com/group/flexcoders/message/159010

于 2010-09-23T15:09:00.370 回答