Flash SWF,从浏览器内部读取文件内容,可能吗?
Flash SWF, reading the file contents from inside the browser, possible?
我有一个 actionscript 项目,我将其部署为 Air 桌面应用程序和使用 Flash 插件的浏览器。
我的桌面部署读取 SWF 文件本身,创建文件的散列并将其发送到我的服务器。如果散列与预期的不匹配,SWF 会将其自身上传到我的服务器以供进一步检查。这全部使用 flash.filesystem 库。
在浏览器中部署为 Flash 文件时也可以这样做。我无权访问 flash.filesystem 以进行浏览器部署。
是否存在使用文件系统以外的方法来读取 SWF 本身。
您可以将 Flex 代码部署到 AIR 桌面应用程序,该应用程序被转换为 SWF 文件,可在浏览器中用作嵌入式对象。
请阅读更多 here.
要获取 SWF 字节,请使用 URLStream API 将字节接收到某些 bytearray
变量中。
然后您可以使用 ByteArray API 读取(处理)bytearray
。
根据这篇文章 (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);
}
我有一个 actionscript 项目,我将其部署为 Air 桌面应用程序和使用 Flash 插件的浏览器。
我的桌面部署读取 SWF 文件本身,创建文件的散列并将其发送到我的服务器。如果散列与预期的不匹配,SWF 会将其自身上传到我的服务器以供进一步检查。这全部使用 flash.filesystem 库。
在浏览器中部署为 Flash 文件时也可以这样做。我无权访问 flash.filesystem 以进行浏览器部署。
是否存在使用文件系统以外的方法来读取 SWF 本身。
您可以将 Flex 代码部署到 AIR 桌面应用程序,该应用程序被转换为 SWF 文件,可在浏览器中用作嵌入式对象。 请阅读更多 here.
要获取 SWF 字节,请使用 URLStream API 将字节接收到某些 bytearray
变量中。
然后您可以使用 ByteArray API 读取(处理)bytearray
。
根据这篇文章 (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);
}