2010-02-16 3 views
1

저는 처음으로 Adobe Air 프로젝트를 시작했습니다 (저는 순수 AS3 개발자입니다). 레이어를 지원하는 이미지 편집기를 만들 계획입니다. 가장 좋은 방법은 레이어 데이터 (이미지)를 포함한 전체 프로젝트를 사용자의 하드 디스크에 저장하는 것이 무엇인지 궁금합니다.Adobe Air 용 사용자 정의 파일 형식 만들기

내 애플리케이션의 맞춤 파일 형식을 만드는 데 장단점이 있는지 궁금합니다. 아이디어는 하나의 파일에 전체 프로젝트를 저장할 수 있다는 것입니다. 이 작업은 이미지 크기, 레이어 이름, 레이어 데이터 오프셋 등과 같은 파일 헤더에 메타 데이터를 쓰는 방법으로 수행됩니다.

이전 버전과의 호환성 유지와 같은 문제를 염두에두고 있습니다. 새 프로젝트 기능/메타 등을 추가 한 후

나는 사람들에게 Adobe Air 용 사용자 정의 파일 형식을 만드는 데 필요한 조언이나 경험이 있는지, 다른 'out-of-the-box' 복잡한 데이터를 사용자 하드 디스크에 저장하는 솔루션

감사합니다.

답변

5

아마 사용자 정의 이진 형식을 사용하여 ByteArray을 디스크에 쓸 수 있습니다. 그것은 빠르고 작아야합니다. 필자는 사용자 정의 바이너리 형식을 작성한 적이 없지만 여기있는 사람이 모범 사례를 통해 여러분을 안내 할 것이라고 확신합니다. writeUTF 또는 writeUTFBytes을 사용하여 ByteArray에 문자열 배열에 대한 설명을 저장할 수 있으며 ByteArray를 반환 할 때 BitmapData's getPixels()을 사용할 수 있습니다.

마음에 떠오르는 '해결 방법'아이디어는 파일을 설명하는 xml 파일 (레이어인코더)을 사용하여 레이어를 PNG/JPEG로 포함하는 as3 zip package을 보관하는 보관 파일을 만드는 것입니다. 어디로, 어떤 블렌드/투명성/등으로 가는지). 그래도 조금 길어질 수도 있습니다.

HTH, 조지 난 내 프로젝트에 대한 사용자 정의 바이너리 형식의 몇 가지를 작성했습니다

+0

바이너리 형식에 대한 타당한 이유가없는 경우 (정보를 추출하기가 조금 더 어려움) 설명자 + 자산으로 압축 된 +1. –

0

. 먼저 파일에 대한 메타 데이터를 사용하여 형식에 맞는 헤더를 만들려고합니다. File Structure of an MP3 file을 확인하십시오. 파일 구성 방법에 대한 통찰력을 얻을 수 있습니다. 나는 당신의 레이어가 다이어그램에서 MP3 프레임에 해당 할 것이라고 생각합니다. 데이터의 일부분이 반복되는 것을 볼 수 있습니다.

Flex는 클래스를 [RemoteObject]으로 표시하고 직렬화 된 형식으로 디스크에 쓸 수있는 옵션을 제공합니다. 그러나 나는 그것이 너무 많은 크기를 차지하는 것을 알았다. ByteArray를 만들고 헤더 데이터를 개별적으로 작성했으며이 방법을 사용하여 거의 200 바이트를 저장할 수있었습니다.

ByteArray 및 해당 기능에 대한 설명서를 읽었는지 확인하십시오.

마지막 부분에 대해서는 hdd에 복잡한 데이터를 저장하기위한 해결 방안을 모르고 있습니다. 원한다면 더 구체적인 정보를 제공해 드릴 수 있습니다.

관련 문제