2 #include <Multimedia/SDX.h>
3 #include <Multimedia/Image.h>
4 #include <Framework/ImagePack.h>
27 class Anime :
public ImagePack
31 std::vector<unsigned int> times;
32 std::vector<int> nexts;
53 if( timer > anime->times[frameNumber] )
55 timer -= anime->times[frameNumber];
56 switch ( anime->nexts[frameNumber] )
58 case (
int)NextFrame::Normal:
59 frameNumber += direct;
61 case (
int)NextFrame::ToFront:
63 frameNumber += direct;
65 case (
int)NextFrame::ToBack:
67 frameNumber += direct;
69 case (
int)NextFrame::End:
73 frameNumber = anime->nexts[frameNumber];
77 if ((
unsigned int)frameNumber >= anime->images.size()) frameNumber = 0;
78 if (frameNumber < 0) frameNumber = anime->images.size() - 1;
87 return anime[0][frameNumber];
93 this->frameNumber = コマ数;
100 Anime(
const char *ファイル名,
int 総コマ数,
int コマ割り横,
int コマ割り縦,
int 再生フレーム数 = 1) :
101 ImagePack( ファイル名 , 総コマ数 ,コマ割り横 , コマ割り縦)
103 for(
unsigned int i=0; i<times.size() ; ++i )
105 times.push_back(再生フレーム数);
106 nexts.push_back((
int)NextFrame::Normal);
111 bool Load(
const char *ファイル名,
int 総コマ数,
int コマ割り横,
int コマ割り縦,
int 再生フレーム数 = 1)
115 for(
int i=0;i<総コマ数;++i)
117 times.push_back(再生フレーム数);
118 nexts.push_back((
int)NextFrame::Normal);
125 bool Load(
const char* ファイル名,
const char *拡張子,
int 総コマ数,
int 再生フレーム数 = 1)
127 for(
int i=0 ; i<総コマ数 ; ++i)
130 sprintf_s( fileBuf , 8 ,
"%03d." , i );
131 std::string fileName = ファイル名;
135 this->
Add(
new Image(fileName.c_str()), 再生フレーム数);
145 times.push_back(再生フレーム数);
146 nexts.push_back( (
int)NextFrame::Normal);
148 void Add(
const char *ファイル名,
int 再生フレーム数 = 1)
165 for(
unsigned int i=0 ; i< times.size() ; ++i )
167 times[i] = フレーム時間[i];
176 case AnimeType::Normal:
177 nexts[nexts.size()-1] =(int)NextFrame::Normal;
179 case AnimeType::Reverse:
180 nexts[0] =(int)NextFrame::ToFront;
181 nexts[nexts.size()-1] =(int)NextFrame::ToBack;
184 nexts[nexts.size()-1] =(int)NextFrame::End;
194 void SetType(
int コマ番号 , NextFrame 次フレーム )
196 nexts[コマ番号] = (int)次フレーム;
204 for(
auto it : times )
212 Image* operator[](
int index)
const
214 return images[index];
virtual void Add(Image *追加イメージ)
Imageを追加.
Definition: ImagePack.h:79
virtual void Release()
Imageをメモリから開放.
Definition: ImagePack.h:91
void SetType(int コマ番号, int 次フレーム)
指定コマの次フレームを設定する.
Definition: Anime.h:190
bool Load(const char *ファイル名, int 総コマ数, int コマ割り横, int コマ割り縦, int 再生フレーム数=1)
画像ファイルを分割してメモリへ読み込む.
Definition: Anime.h:111
int GetAnimeTime() const
全コマの合計フレーム時間を返す.
Definition: Anime.h:200
bool UpDate(double 経過フレーム=1)
カウンタの更新.
Definition: Anime.h:49
void SetType(AnimeType 再生方法)
アニメの再生方法を指定する.
Definition: Anime.h:172
画像データを表すクラス.
Definition: Image.h:37
void SetFrameTime(int フレーム時間[])
各コマのフレーム数を設定する.
Definition: Anime.h:163
void Release()
Imageを開放し初期化する.
Definition: Anime.h:154
void SetFrame(int コマ数)
コマの位置を設定.
Definition: Anime.h:91
void Add(Image *追加イメージ, int 再生フレーム数=1)
末尾にImageを追加する。.
Definition: Anime.h:142
Imageをまとめてコマ送りアニメとして表すクラス.
Definition: Anime.h:28
virtual bool Load(const char *ファイル名, int 総コマ数, int コマ割り横, int コマ割り縦)
1つの画像を分割して読み込む.
Definition: ImagePack.h:34
Animeの再生情報を管理するクラス.
Definition: Anime.h:35
bool Load(const char *ファイル名, const char *拡張子, int 総コマ数, int 再生フレーム数=1)
連番ファイルを一括して読み込む.
Definition: Anime.h:125
Image * GetFrame()
現在のコマ番号を取得.
Definition: Anime.h:85