티스토리 뷰
Hello Lua 소스 코드를 분석합니다.
이 글에서는 스프라이트 애니메이션을 만드는 코드를 살펴보겠습니다.
-- 창 크기를 구함
local visibleSize = CCDirector:sharedDirector():getVisibleSize()
-- origin을 구함
local origin = CCDirector:sharedDirector():getVisibleOrigin()
-- 크기 지정
local frameWidth = 105
local frameHeight = 95
local textureDog = CCTextureCache:sharedTextureCache():addImage("dog.png")
-- rect를 그림의 크기만큼으로 만듦
local rect = CCRectMake(0, 0, frameWidth, frameHeight)
-- 첫번째 프레임을 팩토리 함수로 만든다.
local frame0 = CCSpriteFrame:createWithTexture(textureDog, rect)
-- 다음 프레임에 해당하는 rect를 만듦. 텍스쳐에서 두번째 애니메이션 부분을 만들 것이기 때문에 시작 x좌표를 frameWidth로 수정
rect = CCRectMake(frameWidth, 0, frameWidth, frameHeight)
-- 마찬가지로 두번째 프레임을 팩토리 함수로 만든다.
local frame1 = CCSpriteFrame:createWithTexture(textureDog, rect)
-- CCSprite를 위에서 만든 프레임을 이용하여 생성한다.
local spriteDog = CCSprite:createWithSpriteFrame(frame0)
-- 그리고 애니메이션이 되도록 pause를 해제
spriteDog.isPaused = false
-- 스프라이트의 위치를 지정한다.
spriteDog:setPosition(origin.x, origin.y + visibleSize.height / 4 * 3)
-- 프레임들을 담을 array를 생성하고, 담는다.
local animFrames = CCArray:create()
animFrames:addObject(frame0)
animFrames:addObject(frame1)
-- Animation을 담당하는 클래스를 생성. 프레임들을 담은 array와 interval을 이용한다.
local animation = CCAnimation:createWithSpriteFrames(animFrames, 0.5)
-- 그리고 그 Animation을 이용하여 애니메이션 액션을 만든다. (CCAnimate는 액션이다.)
local animate = CCAnimate:create(animation);
-- 마지막으로 위에서 생성하였던 Sprite인 spriteDog에 runAction 함수로 방금 만든 액션을 실행시킨다. 이제 프레임 애니메이션이 된다.
spriteDog:runAction(CCRepeatForever:create(animate))
'프로그래밍 > 게임 개발' 카테고리의 다른 글
[Cocos2d-x] Lua binding - CCMenuItemFont 터치 핸들러 (1) | 2013.07.05 |
---|---|
[Cocos2d-x] Lua Binding - Logging (0) | 2013.07.05 |
[Cocos2d-x] tinyxml2 쓰기 (1) | 2013.06.30 |
[Cocos2d-x] Multi-platform 프로젝트 생성 (1) | 2013.06.19 |
Pudding3D 타임라인 (3) | 2013.03.31 |
- Total
- Today
- Yesterday