티스토리 뷰

Hello Lua 소스 코드를 분석합니다.

이 글에서는 스프라이트 애니메이션을 만드는 코드를 살펴보겠습니다.



        -- 창 크기를 구함

        local visibleSize = CCDirector:sharedDirector():getVisibleSize()

        -- origin을 구함

        local origin = CCDirector:sharedDirector():getVisibleOrigin()


        -- 크기 지정

        local frameWidth = 105

        local frameHeight = 95


        -- CCTextureCache를 불러와서 dog.png로 텍스쳐를 만든다.

        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))




댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday