저는 게임 레벨을 swf 파일에 포함하려는 작은 일반 텍스트 파일에 저장하는 플래시 게임을 작성하고 있습니다. 현재 솔루션에는 반복적 인 코드 냄새가 있으며 더 나은 방법이 있다고 확신합니다. 내 코드는 기본적으로 :ActionScript 3에서 런타임 검색을 위해 외부 데이터 파일을 어떻게 포함해야합니까? 아키텍처 도움이 필요합니다
LevelLoader 클래스에서이
수준이로드 될 필요가[Embed(source="levels/1.dat", mimeType="application/octet-stream")]
protected var level1:Class;
[Embed(source="levels/2.dat", mimeType="application/octet-stream")]
protected var level2:Class;
, 문자열을 읽어들이는 모든 레벨을 포함 :
var bytes:ByteArray;
if (levelNumber == 1) {
bytes = new level1();
} else if (levelNumber == 2) {
bytes = new level2();
}
var levelStr:String = bytes.readMultiByte(bytes.bytesAvailable, bytes.endian);
prepareLevel(levelStr);
몇 가지 문제가 있습니다 이 접근법은 다음과 같습니다.
- 각 레벨을 삽입 할 라인을 추가해야합니다. 폴더의 모든 파일이 자동으로 포함되도록하는 것이 가장 좋습니다.
- 레벨을 문자열에서 "준비"할 수 없습니다. LevelLoader에 레벨 번호 나 레벨 이름을 문자열로 전달할 수 있기를 바랍니다.
- 모든 문자열이 디스크가 아닌 메모리에 저장되어 있다고 생각합니다.
"올바르게"프로그래밍 할 수 있습니까? ActionScript 3는이 문제를 해결할 수 있습니까?
수준의 ZIP을 사용하여 약간의 도박을 할 수도 있습니다. http://stackoverflow.com/questions/1053546/howto-embed-images-in-actionscript-3-flex-3-the-right-way/ 1055867 # 1055867 –
감사합니다. 이로써 문제의 절반이 해결됩니다. 해시 또는 다른 키 - 값 저장소에 임베드하는 방법이 있나요? 그래서 각 수준마다 변수가 필요하지 않습니까? – Andy
분명히 없습니다. 다음은 ZIP을 사용하는 것과는 다른 방법입니다. http://stackoverflow.com/questions/3908929/how-to-embed-a-lot-of-images-using-actionscript-3 –