surface_exists 함수 설명
개요
surface_exists 함수는 특정 서피스가 존재하는지를 확인하는 기능을 제공합니다. 서피스는 메모리에서 휘발성이 있기 때문에, 언제든지 사라질 수 있습니다. 예를 들어, 윈도우에서 스크린 세이버가 시작되거나 안드로이드 기기에서 앱이 최소화될 때 서피스가 삭제될 수 있습니다. 따라서 서피스를 사용하기 전에 항상 존재 여부를 확인하는 것이 중요합니다.
문법
surface_exists(surface);
인수 설명
| 인수 | 유형 | 설명 |
|---|---|---|
| surface | Surface | 존재 여부를 확인할 서피스 |
반환값
- Boolean: 서피스가 존재하면
true, 존재하지 않으면false를 반환합니다.
예제
아래의 예제 코드는 인스턴스의 드로우 이벤트에서 서피스의 존재 여부를 확인하고, 만약 서피스가 삭제되었다면 다시 생성하는 방법을 보여줍니다. 서피스는 객체의 생성 이벤트에서 처음 생성되었다고 가정합니다.
if !surface_exists(surf) {
surf = surface_create(1024, 1024);
} else {
if (view_current == 1) {
draw_surface(surf, 0, 0);
}
}
위의 코드는 surf라는 변수에 인덱스된 서피스가 존재하는지 확인합니다. 만약 존재하지 않으면 서피스를 다시 생성합니다. 존재한다면 현재 그려지고 있는 뷰를 확인하고, 뷰가 view[1]일 경우 서피스를 화면에 그립니다.
활용 예제
- 서피스 생성 및 삭제 관리
gml if !surface_exists(surf) { surf = surface_create(800, 600); } - 서피스의 내용 업데이트
gml if surface_exists(surf) { draw_set_target(surf); draw_clear_alpha(c_black, 0); // 추가적인 드로잉 코드 draw_set_target(0); } - 서피스의 크기 조정
gml if surface_exists(surf) { surf = surface_resize(surf, 1024, 768); } - 서피스의 비율에 따라 그리기
gml if surface_exists(surf) { draw_surface(surf, x, y); } - 서피스가 존재하지 않을 때의 대체 처리
gml if !surface_exists(surf) { // 대체 처리 코드 }
이와 같은 방식으로 surface_exists 함수를 활용하여 서피스를 안전하게 관리하고, 다양한 그래픽 작업을 수행할 수 있습니다.