Cocos2d-X사용 안드로이드에서 assets에 접근 못할때...

2012. 6. 11. 10:21프로그래밍/Cocos2dX

728x90
반응형

Cocos2D-X를 사용해서 iOS에서 작성한 게임을 c/c++소스사용해서 안드로이드로 포팅할때 

일반적인 png등은 정상적으로 로딩된다 하지만 그 외의 다른 방식으로 리소스 파일들에 접근되지 않을 경우 해결 방법은 다음과 같습니다. 그 어떠한 경로를 구해서 접근해봐도 null갑싱 넘어오는 이는 충분히 이해가 가는 부분이다.


cocos2d::CCFileUtils::fullPathFromRelativePath()를 이용해봐도 넘겨준 파일이름만 넘어올 뿐 fopen으로 사용할 수 없습니다. 그리고 cocos2d::CCFileUtils::getWriteablePath()를 사용해봐도 정상적으로 사용되지 않습니다.

또한 Cocos2D-X의 cocos2d-1.0.1-x-0.13.0-beta버전에서는 fullPathFromRelativePath()의 Error로 인해서 ""값이 넘어온다고 합니다. 하지만 현재는 버그가 수정되어서 그런지 내부 소소르를 봐도 정상적으로 수정된 듯 합니다.

따라서 다음과 같은 부분을 한번 확인해 보시고 사용해 보시면 될듯 합니다.



if ((fp = fopen(path, "r")) == NULL)를 사용하지 말고 getFileData()를 사용해야 정상적으로 접근이 가능합니다.


원문의 내용 일부입니다.

You can not read a file using fopen() on android, because the files are packed into apk, which is a zip file. You can use CCFileUtils::getFileData().


출처 : http://www.cocos2d-x.org/boards/6/topics/8486


위의 내용은 안드로이드의 경우 일반 파일이 아닌 zip파일(apk)로 포장되있기에 일반적인 fopen으로는 읽을수가 없습니다.


728x90
반응형