brunch

You can make anything
by writing

C.S.Lewis

by 원강민 Oct 07. 2015

COMPOSER API 이해하기

인트로, 게임, 결과 등의 씬(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를 이용해서 좀 더 쉽게 화면을 구성할 수 있습니다. 윈도우는 아직 지원하지 않습니다.


매거진의 이전글 코로나를 움직이는 언어 :: 루아
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari