2013-08-07 1 views
0

으로 제 3 자 pacakge 'deng.fzip.FZip'을 사용하여 큰 파일의 압축을 푸십시오. 300 MB, 응용 프로그램이 추락했습니다. 나는 fzip.load (url : URLRequest) 함수가 비동기가 아닌 동기식이라는 것을 알았습니다. 그 이유는 아마도 fzip이 총 데이터를로드 한 다음 memory.how에서 응용 프로그램이 큰 압축을 푸는 원인이라고 생각합니다 액션 스크립트 3.0의 큰 .zip 파일? thx 사전에!응용 프로그램이 동작 스크립트 3.0에서 deng.fzip.FZip으로 큰 파일 (300MB)을 압축 해제 할 때 크래시 됨 제목에 설명 된대로

+0

zip 파일이 300MB 인 경우 내용은 500MB이고 일반적으로 플래시/AS3에 디스크 액세스가 허용되지 않으므로 메모리가 필요합니다. 따라서 압축을 풀 메모리가 충분하지 않은 경우에는 압축 파일을로드하지 못했습니다. 설명 데이터 (몇 개의 파일이 있는지, 총 압축되지 않은 볼륨은 무엇인가)를 읽은 직후입니다. – Vesper

답변

0

Publish 설정에서 설정 한 시간 제한에 관계없이 동기식 메서드는 Flash Player에서 15 초 이상 실행할 수 없습니다 (AIR에서는 더 길 수 있음).

가장 좋은 방법은 압축 해제를 수행하고 그 루프에 작은 체크 할 클래스 열 수 있습니다 :

// before loop 
var startingTime:int = getTimer(); 

// inside the loop 
if (getTimer() - startingTime > TIMEOUT_VARIABLE_HERE) 
{ 
    // save the i position, break the loop, set timeout for, let's say, 30 ms and start the loop with i = your saved i when breaking out of the loop. 
} 

그것은 1 초에 문제를 해결 멋진 해결책이 아니다, 그러나 그것은 정말 좋은 실제 문제를 해결할 강력한 방법.

관련성이 있는지는 모르겠지만 작은 참고 사항 : 공식적으로 Flash Player는 100MB 이하의 파일을 지원합니다. 그러나 2GB 이상의 메모리를 소비하고 여전히 잘 돌아가는 플래시 게임 (알파 테스트에서)을 보았습니다.

+0

메모리 사용은 파일 크기에 아무런 영향을주지 않습니다. 나는 많은 기억을 먹었지 만 10 킬로바이트 무게의 절차 생성기를 가지고있다. 또한이 제한은 SWF에 대한 것이지 SWF에 의해로드 된 것에 대한 것이 아닙니다. – Vesper