AS3 및 AIR을 사용하는 iOS 앱이 있습니다. 외부 swfs 서버에서 다운로드하고 제대로 재생 - 모든이 완벽하게 작동합니다.AS3 iOS 기기에 SWF 저장 후 MovieClip에 다시로드
사용자가 앱을 실행할 때마다이 swfs를 다운로드하지 않아도되기 때문에 swf를 다운로드 한 후 처음으로 디스크에 저장하려고합니다. 그렇게하면 나중에 다운로드 할 필요없이 로컬 복사본에서로드 할 수 있습니다. 나는 AS3 파일을 저장하기위한 온라인이 예제를 발견
var file:File = File.applicationStorageDirectory.resolvePath("Swfs/" + "mySwfName" + ".swf");
var wr:File = new File(file.nativePath);
var stream:FileStream = new FileStream();
stream.open(wr, FileMode.WRITE);
stream.writeBytes(SWF_FILE_GOES_HERE, 0, SWF_FILE_DATA_LENGTH_GOES_HERE);
stream.close();
문제는 writeBytes
라인입니다. 내가 찾은 샘플 디스크에 이미지를 저장하기 위해, 그리고 그 라인은 다음과 같이 읽어
stream.writeBytes(imageData, 0, imageData.length);
하지만이 SWF 아닌 이미지에 대해이 작업을 수행해야하고, 내가 필요한 얻을하는 방법을 잘 모르겠어요 내 swf 파일에서 데이터. swf 파일 저장, swf 파일에서 데이터 가져 오기 등을 위해 온라인에서 검색했습니다 ... 그러나 아무것도 찾지 못했습니다. swf의 데이터 및 데이터 길이를 가져와야합니다 (바이트 수가 있다고 가정합니다). 누구든지 전에이 문제를 해결 했습니까?
UPDATE :
stream.writeBytes(mySwf.loaderInfo.bytes, 0, mySwf.loaderInfo.bytesTotal);
이 그것을 컴파일하고 오류없이 실행만큼에 작동하는 것 같다 : @LondonDrugs_MediaServices의 의견을 바탕으로, 나는 writeBytes
라인을 알아 냈어.
Error #2044: Unhandled IOErrorEvent:. text=Error #2035: URL Not Found.
파일이 실제로 제대로 저장되지 것을 의미한다 : 나는 파일을 잡고 무비 클립에 다시 넣어하려고 할 때, 나는이 오류가 발생합니다. 그러나 파일 위치를 인쇄 할 때 올바른 것으로 보입니다! 나는 시도하고 저장 벗어나 무비 클립에로드 할 때
/Users/MyName/Library/Preferences/com.appdir/Local Store/Swfs/mySwName.swf
그리고 파일 이름 : 나는 applicationStorageDirectory에 파일을 저장하면
/Users/MyName/Library/Preferences/com.appdir/Local Store/Swfs/mySwName.swf
이것은 내가에 사용하고 코드입니다 시도하고 무비 클립으로 다시로드 :
:var videoFileName:String = "Swfs/" + ENVAR.currentVideoSelected + ".swf";
var videoFilePath:File = File.applicationStorageDirectory.resolvePath(videoFileName);
var inFileStream:FileStream = new FileStream();
trace("[Loading] filepath: ", videoFilePath.nativePath);
inFileStream.open(videoFilePath, FileMode.READ);
var fileContents:String = inFileStream.readUTFBytes(inFileStream.bytesAvailable);
inFileStream.close();
var req:URLRequest = new URLRequest(videoFilePath.nativePath);
var mLoader:Loader = new Loader();
mLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onVideoLoadComplete);
mLoader.load(req);
그리고 내 onVideoLoadComplete
기능에는 다음의 세 행이 포함됩니다
var myMC:MovieClip = e.target.content as MovieClip;
addChild(myMC);
하지만 2044 오류가 발생하며 파일이 존재하지 않는다고 생각합니다. 누구든지 문제를 발견 할 수 있습니까? 감사!
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/ : 다음
는 무비 클립으로 다시 그것을 밖으로 당겨 3/flash/display/LoaderInfo.html # bytes – BadFeelingAboutThis그래서 이론적으로는 swf의 loaderInfo.bytes 속성을 사용하여 스트림으로 다시 저장하는 것이 가능해야한다고 생각합니다.writeBytes, 해본 적이 없기 때문에 나는 이것을 해답으로 생각하지 않는다. – BadFeelingAboutThis
App Store에이 앱을 제출하려는 경우 외부 코드 (swf)를로드하고 실행하기 때문에 앱이 거부 될 것으로 생각됩니다. – sch