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
함수를 활용하여 서피스를 안전하게 관리하고, 다양한 그래픽 작업을 수행할 수 있습니다.