내 프로젝트의 "assets"폴더에 임베드 한 일부 이미지를 File.applicationStorageDirectory 위치로 복사해야하지만 실제로 어떻게해야하는지에 대해서는 알지 못합니다. File 객체 인스턴스를 사용하여 포함 된 파일에 액세스하는 방법을 모르겠습니다.) ..."assets"의 임베디드 파일을 File.applicationStorageDirectory로 복사
어떤 제안이 있습니까?
내 프로젝트의 "assets"폴더에 임베드 한 일부 이미지를 File.applicationStorageDirectory 위치로 복사해야하지만 실제로 어떻게해야하는지에 대해서는 알지 못합니다. File 객체 인스턴스를 사용하여 포함 된 파일에 액세스하는 방법을 모르겠습니다.) ..."assets"의 임베디드 파일을 File.applicationStorageDirectory로 복사
어떤 제안이 있습니까?
기본적으로 주석에 제안 된대로 내장 자산은 기본적으로 ByteArray에 직렬화되지 않습니다. 예를 들어, 이미지는 BitmapAsset 클래스로 직렬화됩니다.
[Embed(source="sourceImg.png")]
private var MyImage:Class;
이 삽입을 위해 당신이 할 수 있습니다 :
var bmp:BitmapAsset = new MyImage();
ByteArray의에 의해 BitmapAsset 것을 변환하는 방법이 있습니다,하지만 더 쉬운 방법도 있습니다 : 당신은 '옥텟 스트림'에 유형을 설정 한 경우에 embed 지시문을 사용하면 ByteArray의 하위 클래스 인 ByteArrayAsset 클래스에 즉시 직렬화됩니다. 그래서 당신은 할 수 있습니다 :
[Embed(source="sourceImg.png", mimeType="application/octet-stream")]
private var MyImage:Class;
var bytes:ByteArray = new MyImage();
지금 당신이해야 할 모든하여 FileStream을 사용하여 디스크에 해당 된 ByteArray를 작성할 수 있습니다 :
var file:File = File.desktopDirectory.resolvePath('targetImage.png');
var fs:FileStream = new FileStream();
fs.open(file, FileMode.WRITE);
fs.writeBytes(bytes);
fs.close();
을 그리고 그게 전부입니다.
완벽! 그게 바로 제가 찾고 있었던 것입니다. 고마워요! – jroy
포함 된 파일은 ByteArray로 직렬화되므로 [FileStream.writeBytes()] (http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash)를 사용할 수 있어야한다고 가정합니다. /filesystem/FileStream.html#writeBytes())를 사용하여 파일에 기록합니다. – RIAstar
감사합니다. 그런 목적을 위해 포함 된 파일을 참조하는 File 객체를 만들어야합니다. 어떻게해야합니까? 'new File ("???")' – jroy
새로운 빈 파일을 만들고 FileStream을 사용하여 그 파일에 쓰면됩니다. "AIR 쓰기 파일"검색을 통해 관련 주제에 대한 결과를 얻을 수 있습니다. – RIAstar