달력

5

« 2025/5 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

P.243

Schedule (*중요)

cocos의 타이머와 같은 개념. Layer가 가지고 있는  method.

CC_CALLBACK_n을 쓰지 않고, schedule_selector를 사용함.


void callback(float delta);

여기서 delta는 해당 함수가 호출되는 타이머들 간의 호출 시간이다.


cocos의 메인타이머 - appDelegate.cpp

schedule은 메인 타이머에 종속적이기 때문에, 메인타이머의 interval보다 짧은 schedule은 존재할 수 없다.


싱글 게임에서는 크게 상관없지만, 온라인 게임에서는 이 delta를 이용해서 계산(이동거리 등)하는 용도 등에 중요하게 작용한다.


this->schedule(schedule_selector(HelloWorld::callback), 1.0f, 5, 3.0f);

//총 6번 호출(3.0f 기다리는거 1회, 1.0f 5회)

//( 호출 함수, 호출 간격, 호출 횟수, 딜레이 타임(시작전까지) )

//간격 없을 시 main timer과 동일, 횟수 없을 시 무한반복, 딜레이 없을시 바로 시작

//schedule_selector을 통해 불릴 함수는 무조건 float delta를 받아야한다.


this->scheduleOnce(schedule_selector(HelloWorld::callback), 3.0f);

//3초 대기 후, 한번만 호출


this->scheduleUpdate();

//특별한 인자 없이 update()라는 메소드를 호출하는 함수. 항상 들어간다고 보면 됨.

//여기에서 동기화 등을 해주는 것 같다.



스케줄 해제

this->unscheduleUpdate();

this->unscheduleAllSelectors();

this->unschedule(schedule_selector(HelloWorld::callback));

:
Posted by 웽웽

게임 애니메이션에 쓰이는 Sprite들은 하나의 이미지 파일에 뭉쳐서 사용한다.(리소스 절약)

연속된 애니메이션을 구성하는 이미지를 Texture Packer등으로 합칠 수 있다. 

이렇게 만들어진 이미지를 아틀라스 이미지 라고 부른다.

링크 : https://www.codeandweb.com/texturepacker/start-download?os=win&bits=64


다른 것들은 웬만하면 건들지 말고, 합친 그림파일의 사이즈와 Data와 Texture의 경로만 지정해주고,

이 Texture Packer를 이용해서 스프라이트들을 묶으면, 2개의 파일이 나온다.

1) 합쳐진 .png파일

2) 합쳐진 파일 내의 각 그림들의 이름과 위치(좌표)가 담긴 .plist파일(plist == Property List)


 + plist는 Mac에서 많이 쓰는 데이터 형식. Windows에서의 XML과 비슷한 유형이다.

plist View같은 파일도 있다. 하지만 별로 쓸 일은 없다.

plist를 framecache에 등록한다. 그러면 해당 plist에 등록된 파일이 전부 cache에 올라간다.

- HelloWorldScene.cpp



 - 사용법

1) 스프라이트 생성


2) Animation

 - Delay time : 간격시간 설정

 - Add Frame : 프레임 추가


3) Animate

 - Animation : 액션형


4) spr->runAction( animation );



SpriteFrameCache에 등록한 plist는 SpriteFrameCache자체에 등록되어 SpriteFrameName 관련 메소드로 불러와서 사용할 수 있다.

 ex)




객체가 행하고 있는 액션을 멈추는 메소드

stopAllAction()            //현재 객체가 실행중인 모든 액션을 멈춤

stopActionByTag()       //현재 객체가 실행중인 특정 액션을 멈춤



예제 - HelloWorldScene.cpp



'DATA_OLD > Cocos2d-x 기능성 게임 개발과정' 카테고리의 다른 글

[D_011] 배경 스크롤 - Layer  (0) 2014.11.25
[D_010] Schedule  (0) 2014.11.24
[D_009] 카드 게임  (0) 2014.11.21
[D_008] Layer - LogoLayer 예제  (0) 2014.11.20
[D_008] Scene전환 - replace / push,pop  (0) 2014.11.20
:
Posted by 웽웽

MenuScene.h


MenuScene.cpp


GameScene.h


GameScene.cpp


AppDelegate.cpp


AppDelegate.h


GameScene.cpp


GameScene.h


MenuScene.cpp


MenuScene.h




============================================

main, retry추가한 완성본



//카드의 수와 카드 줄 수를 지정하면 알아서 거기에 맞게 줄세워서 정렬시키는 방법 강구

:
Posted by 웽웽