这个问题让我发疯,希望你能帮忙。
基本上,我正在创建一个AS3 .swf,应该在许多不同的网站上运行,我将无法控制,并且可以从另一个我无法控制的.swf加载保存。我希望能够从其他目录中加载.sol文件,而不是归因于它运行的网站的目录。
有关详细信息,它是基于知名文本的游戏的角色查看器,我希望能够在桌面上加载保存。
游戏本身能够做到这一点,但它对我不起作用。如果它只在本地运行时才会很高兴,这是由消息来源建议的。
我能够加载一个保存的字节数组,并且跟踪它显示毫无疑问,它是我正在尝试加载的文件。
这是使用Adobe Flash Pro CS6编译的,适用于Adobe Flash Player 11.2,仅访问本地文件。
这是我一直在搞乱的代码,AS3参考示例和原始代码的混合,它给出了同样的错误。
为清晰起见,我没有添加所有处理程序,但它们基本上是'somethingHandler:'+ event。
function openFile(btnName:String):void{
filter = new FileFilter("Local Shared Object", "*.sol");
file = new FileReference();
file.browse([filter]);
file.addEventListener(Event.SELECT, selectFile);
}
function selectFile(e:Event):void{
file.addEventListener(Event.COMPLETE, loadFile);
file.load();
}
function loadFile(e:Event):void{
var tempFileRef:FileReference = FileReference(e.target);
loader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.BINARY;
configureListeners(loader);
try{
var req = new URLRequest(tempFileRef.name);
loader.load(req);
}
catch (error:Error){
trace("error");
}
}
private function configureListeners(dispatcher:IEventDispatcher):void {
dispatcher.addEventListener(Event.COMPLETE, completeHandler);
dispatcher.addEventListener(Event.OPEN, openHandler);
dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler);
dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
}
private function completeHandler(event:Event):void {
var loader:URLLoader = URLLoader(event.target);
trace("completeHandler: " + loader.data);
var vars:URLVariables = new URLVariables(loader.data);
trace("The answer is " + vars.answer);
}
但我得到的只是:
httpStatusHandler: [HTTPStatusEvent type="httpStatus" bubbles=false cancelable=false eventPhase=2 status=0 responseURL=null]
ioErrorHandler: [IOErrorEvent type="ioError" bubbles=false cancelable=false eventPhase=2 text="Error #2032: Stream Error. URL: