CORONA SDK

[Corona SDK]main.lua 및 컴포저, 씬 기초분석

블로그- 2016. 1. 4. 23:09

Corona SDK에서 project의 기본 생성 파일로,

이전에 살펴본 build.settings 와 config.lua는 앱의 설정 부분이라면 

main.lua는 앱 실제 구현물의 첫 도입부로 

main.lua와 컴포저, 그리고 씬에 대해 간단히 분석해보려합니다.


main.lua 분석

일단 Corona Simulator로 Project Template을 여러가지 선택하여 만들어보면 공통적으로

display.setStatusBar( display.HiddenStatusBar )

상태바를 감추는 코드와

local composer = require "composer"

composer.gotoScene( "menu" )

컴포저를 이용해서 씬이동을 하는 코드가 main.lua에 존재하였습니다.


두번째 코드 두줄을 좀 더 살펴보면,

require함수를 통해 composer 라이브러리를 불러와서

그 composer객체의 gotoScene함수를 이용하여 menu라는 씬으로 이동하는 코드입니다.

이때 lua문법상 함수 파라미터가 한 개일 경우 괄호 생략 가능하므로 require "composer"로 표현되고 require("composer")이어도 상관 없습니다.

또한 require함수는 라이브러리를 불러오는 함수로 이미 해당 라이브러리가 로드되어있으면 다시 불러오지 않습니다.


컴포저의 기능 및 씬 구조

그러면 컴포저는 무엇인지 살펴보자면

컴포저(composer)는 코로나의 씬(화면) 생성 및 관리 라이브러리로,

씬은 각각 개별의 lua파일로 구분되는데 컴포저가 해당 lua파일을 씬으로 인식하기 위해서는

1) 씬 초기화 코드,

2) 4개의 리스너 함수 초기화,

3) 4개의 리스너 함수 구현,

4) 컴포저와 씬을 연결하기 위한 return문

의 구조로 lua파일을 프로그래밍하셔야 합니다.




 (Project Template으로 Physics Based Game을 선택했을때)

우선, composer.gotoScene( "menu" ) 함수를 통해

이동한 씬인 menu.lua파일을 열어보면

컴포저가 씬으로 인식할 수 있도록

local composer = require( "composer" )

local scene = composer.newScene()

위와 같이 컴포저를 이용하여 새로운 씬을 만드는 씬 초기화 코드


scene 객체 안에 있는 addEventListener함수를 이용하여

scene:addEventListener( "create",scene)

scene:addEventListener( "show",scene)

scene:addEventListener( "hide",scene)

scene:addEventListener( "destroy",scene)

create, show, hide, destroy 이벤트리스너를 등록하는 리스너 함수 초기화 코드.


그리고 그에 따른

리스너 함수 구현 코드

function scene:create( event )

end

function scene:show( event )

end

function scene:hide( event )

end

function scene:destroy( event )

end


그리고 마지막에 컴포저와 씬을 연결하기 위한 return scene문이 포함되어 있는 것을 확인할 수 있습니다.