More actions
imported>Unknown No edit summary |
(Repair batch-0005 pages from live compare) |
||
| Line 4: | Line 4: | ||
추상화 기초 클래스. | 추상화 기초 클래스. | ||
AddFrame(UINT ITEM)으로 프레임을 추가시키고 외부에서 적절한 타이머를 통해서 움직임을 조절한다.(NextFrame()) | AddFrame(UINT ITEM)으로 프레임을 추가시키고 외부에서 적절한 타이머를 통해서 움직임을 조절한다.(NextFrame()) | ||
beonit.exe | |||
= 코드 = | = 코드 = | ||
class CmyAnimation{ | class CmyAnimation{ | ||
Latest revision as of 00:44, 27 March 2026
코드 설명
추상화 기초 클래스. AddFrame(UINT ITEM)으로 프레임을 추가시키고 외부에서 적절한 타이머를 통해서 움직임을 조절한다.(NextFrame()) beonit.exe
코드
class CmyAnimation{
protected:
vector<UINT> m_frameList;
int m_nowFrame;
private:
void init(){
m_nowFrame = 0;
}
public:
CmyAnimation(){
init();
}
void nextFrame(){
if(m_nowFrame < int(m_frameList.size())-1)
m_nowFrame++;
else m_nowFrame = 0;
}
int getFrameSize(){
return int(m_frameList.size());
}
void addFrame(UINT ITEM){
m_frameList.push_back(ITEM);
}
virtual void drawFrame(CmyDouBuffDC* dc)=0;
};
GIF 포기
결론
자동적인 에니메이션은 불가능. 프레임마다 에니메이션 객체가 스스로의 상태를 파악하여 새로 BMP를 뿌려 주어야 함.
왜?
CDC를 확장한 레밍즈프로젝트/그리기DC에 자동 에니메이션을 구현 하고자 하였다. 하지만 OnDraw에서 생성되고 파괴되는 그리기DC에서 프레임단위의 에니메이션 처리는 옳지 않다. 만약 하게 된다면 모든 레밍들의 객체를 그리기DC안에 넣어야 할 것이다.
대안
대안. 수동으로 진행되는 에니메이션 작업을 클래싱 할 수 있을 듯-_- 버튼에서 활용 가능 할 듯
CmyAnimation
에니메이션이 필요한 객체들은 이 클래스를 상속 받음으로서 에니메이션 처리를 할 수 있다. 이 클래스는 더블버퍼링과 bmp그리기를 자동화 시켜둔 레밍즈프로젝트/그리기DC(CmyDouBuffDC)를 사용하여 드로잉을 수행한다. (CDC를 사용하는 도 있지만... 편의를 위해서...)