buffer_load_async 함수 설명 및 활용 예제
함수 개요
buffer_load_async
함수는 이전에 buffer_save
함수 또는 다른 버퍼 저장 함수로 생성한 파일을 버퍼에 비동기적으로 로드하는 기능을 제공합니다. 이 함수는 다음과 같은 인자를 사용합니다:
- buffer: 로드할 버퍼
- filename: 로드할 파일의 이름
- offset: 버퍼 내에서 로드할 시작 위치 (바이트 단위)
- size: 해당 오프셋부터 로드할 버퍼 영역의 크기 (바이트 단위)
size
인자에 -1을 지정하면 전체 버퍼를 로드합니다. 기본적으로 "default" 폴더에서 로드하며, 비동기 그룹을 사용하는 경우 그룹 이름이 "default"를 대체합니다. 이 폴더는 존재하지 않을 경우 생성됩니다.
함수는 고유한 ID 값을 반환하며, 이 값은 비동기 이벤트에서 async_load
의 ID 값을 확인하는 데 사용됩니다.
문법
buffer_load_async(buffer, filename, offset, size);
인자 설명
인자 | 타입 | 설명 |
---|---|---|
buffer | Buffer | 로드할 버퍼 |
filename | String | 로드할 파일의 이름 |
offset | Real | 로드할 버퍼 내의 오프셋 (바이트 단위) |
size | Real | 로드할 버퍼 영역의 크기 (바이트 단위) |
반환값
- Async Request ID
활용 예제
기본 사용 예
loadid = buffer_load_async(buff, "Player_Save.sav", 0, 16384);
위 코드는 "Player_Save.sav" 파일의 내용을 주어진 버퍼에 로드하고, 함수 호출의 ID를 loadid
변수에 저장합니다.
로드 완료 후 처리
if (ds_map_find_value(async_load, "id") == loadid) {
if (ds_map_find_value(async_load, "status") == false) {
show_debug_message("Load failed!");
}
}
이 코드는 비동기 로드가 완료된 후, 생성된 DS 맵의 ID를 확인하고, 상태를 체크하여 문제가 있을 경우 디버그 메시지를 출력합니다.
비동기 로드 예제
// 비동기 로드 시작
loadid = buffer_load_async(buff, "Game_Data.sav", 0, -1);
// 로드 완료 이벤트에서 처리
if (ds_map_find_value(async_load, "id") == loadid) {
if (ds_map_find_value(async_load, "status") == true) {
// 데이터가 성공적으로 로드됨
show_debug_message("Load successful!");
} else {
// 데이터 로드 실패
show_debug_message("Load failed!");
}
}
HTML5에서의 사용
HTML5 플랫폼에서는 서버에서 파일을 로드할 때 이 방법이 권장됩니다. 동기 로드는 대부분의 브라우저에서 더 이상 지원되지 않기 때문입니다.
이와 같은 방식으로 buffer_load_async
함수를 활용하여 비동기적으로 파일을 로드하고, 로드 완료 후 적절한 처리를 할 수 있습니다.