프로그래밍/Corona SDK2013. 8. 27. 12:32

* 정지된 한 장짜리 이미지를 띄우기

 

  local 변수명 = display.newImage( "표시할이미지파일명" )


  으로 이미지를 표시한다. 

  (블렌딩에 관해서는 다음 참조 : http://www.coronalabs.com/blog/2011/04/28/compositing-fun-with-additive-blends/)

  

  변수명.x = X위치값

  변수명.y = Y위치값


으로 이미지의 표시좌표를 지정할 수 있다.



* 균일 스프라이트


 스프라이트의 가장 간단한 형태로, 스프라이트를 이루는 각각의 그림의 크기가 전부 똑같은 크기로 되어 있는 형태이다(여기서 말하는 그림의 크기는 실제의 그림 내용의 부분이 아니라, 여백을 포함한 그림파일 전체의 물리적 크기를 말한다). 이 방식은 스프라이트 중에 가장 간단한 방식으로, 모든 그림의 크기가 같으므로 일일이 크기나 위치 정보를 저장할 필요가 없고 쉽게 구현할 수 있지만, 작은 그림이 들어가도 전부 같은 크기의 여백이 필요하므로 용량의 낭비가 심하며, 살짝 움직이는 등의 작은 동작도 전부 그림이 바뀌어야 하므로 더욱 용량이 낭비된다. 


1. 스프라이트 시트를 사용하기 위해 먼저 다음과 같은 선언을 한다.

 

 local sprite = require "sprite"    --> 스프라이트 라이브러리의 import

  local options =

  {

    frames = require("스프라이트시트 파일명").frames, --> 스프라이트 파일(*.lua)에 정의된 데이터를 가져와 각 프레임에 할당한다

  }



2. 다음으로 스프라이트 시트를 불러온다. 


local 스프라이트시트변수명 = graphics.newImageSheet( "이미지리소스파일명", options ) 

   --> 가장 중심이 되는 선언부. 어떤 이미지 파일을 사용하는지 정의한다.

local spriteOptions = { name="스프라이트시트 파일명", start=1, count=4, time=400 } 

   --> 각 프레임을 어떻게 넣는가에 대한 것. 

         hero1.lua 파일을 사용하며, 1프레임부터 시작하고, 총 4장의 프레임으로 구성되며, 딜레이는 400ms.

local spriteInstance = display.newSprite( 스프라이트시트변수명, spriteOptions ) 

   --> 첫번째줄의 스프라이트시트 변수명과 같은것을 사용



3.  스프라이트를 실제로 화면에 띄운다.


spriteInstance:setReferencePoint(display.BottomRightReferencePoint)

spriteInstance.x = 300  --> X좌표

spriteInstance.y = 300  --> Y좌표



4.  스프라이트를 재생한다.


spriteInstance:play()



5. 다른 재생관련 제어 기능은 다음과 같다.


  spriteInstance:prepare([sequence])

  현재 플레이 되고 있는 애니메이션 시퀀스를 정지한다. 현재 시퀀스를 바꿀수도 있고 첫번째 시퀀스의 프레임으로 갈 수도 있다.


  spriteInstance:play()

  애니메이션 시퀀스를 플레이한다. 현재의 프레임에서 시작한다.

 

  spriteInstance:pause()

  애니메이션을 정지시킨다. 맨 마지막에 보여졌던 프레임이 남아 있게 된다.

 

  spriteInstance:addEventListener("sprite", listener)

  스프라이트 인스턴스 애니메이션이 이벤트를 일으켰을 때 리스너에 통보한다.


  이벤트는 리스너에게 다음과 같은 필드들을 전달한다.


  event.sprite

  이벤트를 발생한 스프라이트. 

  event.sprite.sequence 와 같은 식으로 현재 스프라이트의 프로퍼티들에 접근하는 것도 가능


  event.phase

  phase는 다음과 같은 요소들이 있다.


  "end" - 플레이를 멈춘다.

  "loop" - 순차적으로 아니면 거꾸로 스프라이트를 루핑.

  "next" - 스프라이트의 다음 프레임이 플레이된다.


Posted by windship