인트로, 게임, 결과 등의 씬(Scene)을 나누는 방법
Composer는 코로나의 공식적인 씬(Scene, 장면) 매니저 입니다. 근데 씬 매니저가 뭐죠?
탭 메뉴를 생각했을 때 하나의 메뉴마다 보여지는 화면이 다릅니다. 혹은 게임에서 장면이 전환되는걸 상상해 보세요. 그 각각의 화면을 하나의 씬이라 생각하면 됩니다. 물리적으로 하나의 씬은 하나의 lua 파일입니다.
(위와 같이 각각의 씬은 lua 파일입니다.)
게임은 아래와 같이 씬이 나눠집니다.
(메뉴, 세팅, 크레딧, 전투, 결과 등 각 장면마다 하나씩 생성합니다.)
아래 링크의 ‘씬 템플릿’으로 구성된 .lua 파일이 바로 씬 입니다.
씬 템플릿: http://docs.coronalabs.com/api/library/composer/index.html#scene-template
물론 모든 이벤트 리스너가 정의되어 있어야 하는 것은 아닙니다.
아래와 같이 MainScene.lua 파일을 만들고 씬이 처음 생성될 때 이미지를 보여주고 싶다면 create 이벤트만 구현하면 됩니다.
local composer = require( "composer" )
local scene = composer.newScene()
function scene:create( event )
local sceneGroup = self.view
local img = display.newImage( sceneGroup, "Icon.png" )
img.x = display.contentCenterX
img.y = display.contentCenterY
end
scene:addEventListener( "create", scene )
return scene
main.lua에서 씬을 호출하는 방법은 아주 간단합니다.
- composer.gotoScene()
- http://docs.coronalabs.com/api/library/composer/gotoScene.html
local composer = require("composer")
composer.gotoScene("MainScene", "fromLeft", 500) -- 왼쪽에서 오른쪽으로 0.5초 동안 이동하며 나타납니다.
맥(Mac)에서 개발한다면 아래와 같이 Composer GUI를 이용해서 좀 더 쉽게 화면을 구성할 수 있습니다. 윈도우는 아직 지원하지 않습니다.