SWF를로드하는 AIR 프로젝트가 있습니다. 하지만로드 된 swf가 SecurityError를 전달하면이 오류를 처리 할 수 없습니다! 내 코드는 우는 소리입니다 :에 FlashDevelop에서Loader.load()에서 SecurityError # 2070 및 # 2000을 처리하는 방법
var loader:Loader = new Loader();
_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, swfComplete);
_loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, swfErrors);
_loader.contentLoaderInfo.addEventListener(Event.INIT, swfInit);
_loader.contentLoaderInfo.addEventListener(Event.OPEN, swfOpen);
_loader.contentLoaderInfo.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatus);
_loader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, swfSecurityError);
_loader.contentLoaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, uncaughtErrors);
try {
_loader.load(new URLRequest('path.swf'));
}
catch(e:SecurityError) {
trace("trying handle error!");
}
function swfComplete(e:Event):void {
trace("complete");
}
function swfErrors(e:IOErrorEvent):void {
trace("swf error: " + e.toString());
}
function swfInit(e:Event):void {
trace("swf init");
}
function swfOpen(e:Event):void {
trace("swf open. this listener dispatch!");
}
function httpStatus(e:HTTPStatusEvent):void {
trace("http status: " + e.toString());
}
function swfSecurityError(e:SecurityErrorEvent):void {
trace("trying handle security error. :(");
}
function uncaughtErrorEvent(e:UncaughtErrorEvent):void {
trace("uncaught error: " + e.toString());
}
예외 :
[Fault] exception, information=SecurityError: Error #2070: Security sandbox violation: caller file.swf cannot access Stage owned by app:/myApp.swf.
[Fault] exception, information=SecurityError: Error #2000: No active security context.
문제는 내 프로그램이 종료 내가 이러한 보안 오류를 잡을 수 있다는 것입니다. 내 프로그램이 닫히지 않게하려면 어떻게해야합니까?
답변 해 주셔서 감사합니다. 솔루션으로 loadBytes를 시도했는데 다른 것들은 연습 할 수 없기 때문입니다. 나는 해냈지만 문제가있다. 나중에 "unloadAndStop"을 사용하여 메모리에서 언로드하는 일련의 파일을로드하지만이 명령은로드 된 파일에서 모든 바이트를 제거하지 않습니다. 이것은 아마도 내 주 swf에 포함 된 클래스의 정의 때문일 수 있습니다. 내 프로그램이 메모리 소비와 충돌을 증가 시킨다는 것이 발생합니다. 이 문제를 어떻게 해결할 수 있습니까? – bio
당신은 수백 메가 바이트 (또는 적어도 수십 메가 바이트)에 대해 이야기하고 있습니까? 한꺼번에로드하여 볼 수 있습니다. 또는로드 된 컨텐츠가 무엇을 필요로하는지 설명하고이를 다시 프로그래밍하여 무대 또는 환경에 액세스 할 필요가 없으므로 일반 방식으로로드 및 언로드 할 수 있습니다. – Organis