Flash SWF,从浏览器内部读取文件内容,可能吗?

时间:2017-02-21 11:37:16

标签: actionscript-3 flash actionscript air

我有一个actionscript项目,我将其部署为Air桌面应用程序,并使用Flash插件部署在浏览器中。

我的桌面部署会读取SWF文件本身,创建文件的哈希并将其发送到我的服务器。如果哈希值与预期值不匹配,则SWF会将自身上传到我的服务器进行进一步检查。这都使用flash.filesystem库。

在浏览器中部署为Flash文件时可以完成相同的操作。我没有访问flash.filesystem进行浏览器部署。

除了使用文件系统之外,还有其他方法来读取SWF本身。

3 个答案:

答案 0 :(得分:2)

根据这篇文章(http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/system/Worker.html),您可以通过 loaderInfo.bytes ByteArray 访问整个SWF内容,因此无需加载任何东西。享受。

回退到加载:

var aRequest:URLRequest = new URLRequest;

// Property loaderInfo.url contains the full path to the SWF.
aRequest.url = loaderInfo.url;

var aLoader:URLLoader = new URLLoader;

// Set data format to binary instead of default text.
aLoader.dataFormat = URLLoaderDataFormat.BINARY;
aLoader.addEventListener(Event.COMPLETE, onReady);
aLoader.load(aRequest);

function onReady(e:Event):void
{
    var anSWF:ByteArray = aLoader.data as ByteArray;
    trace(anSWF.length);
}

答案 1 :(得分:1)

要获取SWF字节,请使用URLStream API将字节接收到某个bytearray变量中。

然后,您可以使用ByteArray API来阅读(处理)bytearray

答案 2 :(得分:0)

您可以将Flex代码部署到AIR桌面应用程序,该应用程序已转换为SWF文件,该文件可在浏览器中用作嵌入对象。 请阅读更多here