DXフレームワーク　リファレンス・マニュアル 0.01 DXフレームワークのリファレンスです。詳細は公式wiki

- メインページ
- 関連ページ
- クラス
- ファイル

- ファイル一覧

Anime.h
1 #pragma once
2 #include "Image.h"
3
4 namespace DXFW
5 {
8 enum class NextFrame
9 {
10 Normal = -10000,
11 ToFront ,
12 ToBack ,
13 End ,
14 };
15
16 enum class AnimeType
17 {
18 Normal,
19 Reverse,
20 End
21 };
22
38 class Anime : public ImagePack
39 {
40 private:
41 std::vector<unsigned int> times;//コマのフレーム数
42 std::vector<int> nexts;//各コマの次フレーム
43 public:
46 class Counter
47 {
48 private:
49 Anime& anime;//対応アニメ
50 int direct;//進行方向
51 int frameNumber;//現在のコマ
52 double timer;//経過時間
53 public:
54
56 Counter(Anime& 親アニメ):
57 anime(親アニメ),
58 direct(1),
59 frameNumber(0),
60 timer(0)
61 {}
62
64 bool UpDate( double 経過フレーム)
65 {
66 timer += 経過フレーム;
67
68 double totalTime = 0;
69
70 if( timer > anime.times[frameNumber] )
71 {
72 timer -= anime.times[frameNumber];
73 switch ( anime.nexts[frameNumber] )
74 {
75 case (int)NextFrame::Normal:
76 frameNumber += direct;
77 break;
78 case (int)NextFrame::ToFront:
79 direct = 1;
80 frameNumber += direct;
81 break;
82 case (int)NextFrame::ToBack:
83 direct = -1;
84 frameNumber += direct;
85 break;
86 case (int)NextFrame::End:
87 return false;
88 break;
89 default:
90 frameNumber = anime.nexts[frameNumber];
91 break;
92 }
93
94 if( (unsigned int)frameNumber >= anime.images.size() ) frameNumber = 0;
95 if( frameNumber < 0 ) frameNumber = anime.images.size()-1;
96 }
97
98 return true;
99 }
100
102 int GetFrame()
103 {
104 return frameNumber;
105 }
106
108 void SetFrame(int コマ数 )
109 {
110 this->frameNumber = コマ数;
111 timer = 0;
112 }
113 };
114
115 Anime(){}
116
120 Anime( const char *ファイル名 , int 総コマ数 ,int コマ割り横,int コマ割り縦,int コマ幅 ,int コマ高さ ):
121 ImagePack( ファイル名 , 総コマ数 ,コマ割り横 , コマ割り縦 , コマ幅 , コマ高さ)
122 {
123 for( unsigned int i=0; i<times.size() ; i++ )
124 {
125 times[i] = 1;
126 nexts[i] = (int)NextFrame::Normal;
127 }
128 }
129
132 bool Load(const char *ファイル名 , int 総コマ数,int コマ割り横, int コマ割り縦 ,int コマ横幅,int コマ縦幅 )
133 {
134 std::vector<int> buf(総コマ数);
135
136 if( DxLib::LoadDivGraph(ファイル名,総コマ数,コマ割り横,コマ割り縦,コマ横幅,コマ縦幅, &buf.front() ) == 0 )
137 {
138 for(int i=0;i<総コマ数;i++)
139 {
140 this->Add( new Image(buf[i]) );
141 }
142 }
143
144 return true;
145 }
146
148 bool Load(const char* ファイル名 , const char *拡張子 , int 総コマ数 )
149 {
150 for(int i=0 ; i<総コマ数 ; i++)
151 {
152 char fileBuf[8];
153 sprintf_s( fileBuf , 8 , "%03d." , i );
154 std::string fileName = ファイル名;
155 fileName += fileBuf;
156 fileName += 拡張子;
157
158 this->Add( new Image( fileName.c_str() ) );
159 }
160 return true;
161 }
162
165 void Add(Image *追加イメージ)
166 {
167 ImagePack::Add( 追加イメージ );
168 times.push_back( 1 );
169 nexts.push_back( (int)NextFrame::Normal);
170 }
171 void Add(const char *ファイル名)
172 {
173 Add( new Image( ファイル名 ) );
174 }
175
178 void Release()
179 {
180 ImagePack::Release();
181
182 times.clear();
183 nexts.clear();
184 }
185
188 void SetFrameTime( int* フレーム時間 )
189 {
190 for(unsigned int i=0 ; i< times.size() ; ++i )
191 {
192 times[i] = フレーム時間[i];
193 }
194 }
195
198 void SetType( AnimeType 再生方法 )
199 {
200 switch(再生方法)
201 {
202 case AnimeType::Normal:
203 nexts[nexts.size()-1] =(int)NextFrame::Normal;
204 break;
205 case AnimeType::Reverse:
206 nexts[0] =(int)NextFrame::ToFront;
207 nexts[nexts.size()-1] =(int)NextFrame::ToBack;
208 break;
209 case AnimeType::End:
210 nexts[nexts.size()-1] =(int)NextFrame::End;
211 break;
212 }
213 }
214
217 void SetType( int コマ番号 , int 次フレーム )
218 {
219 nexts[コマ番号] = 次フレーム;
220 }
221 void SetType( int コマ番号 , NextFrame 次フレーム )
222 {
223 nexts[コマ番号] = (int)次フレーム;
224 }
225
228 int GetAnimeTime() const
229 {
230 int totalTime = 0;
231
232 for( auto it : times )
233 {
234 totalTime += it;
235 }
236
237 return totalTime;
238 }
239
240 Image* operator[](int index)
241 {
242 return images[index];
243 }
244 };
245 }
DXFW::Anime::Anime
Anime(const char *ファイル名, int 総コマ数, int コマ割り横, int コマ割り縦, int コマ幅, int コマ高さ)
画像ファイルを分割読込
Definition: Anime.h:120
DXFW::ImagePack
複数のImageをまとめるクラス
Definition: Image.h:306
DXFW::NextFrame::ToFront
次のコマに進む
DXFW::Anime::Load
bool Load(const char *ファイル名, int 総コマ数, int コマ割り横, int コマ割り縦, int コマ横幅, int コマ縦幅)
Definition: Anime.h:132
DXFW::NextFrame::End
コマの進む向きをマイナスにしてから進む
DXFW::AnimeType
AnimeType
Definition: Anime.h:16
DXFW::AnimeType::Reverse
最後まで再生するとまた最初から再生
DXFW::Anime::SetFrameTime
void SetFrameTime(int *フレーム時間)
Definition: Anime.h:188
DXFW::Anime::Counter
コマの管理
Definition: Anime.h:46
DXFW::NextFrame
NextFrame
次コマの移動先
Definition: Anime.h:8
DXFW::Anime::Load
bool Load(const char *ファイル名, const char *拡張子, int 総コマ数)
連番ファイルを一括して読み込む
Definition: Anime.h:148
DXFW::NextFrame::ToBack
コマの進む向きをプラスにしてから進む
DXFW::Image
画像クラス。ロードしたファイルの描画等。
Definition: Image.h:51
DXFW::Anime::Release
void Release()
イメージをメモリから開放
Definition: Anime.h:178
DXFW::Anime::Counter::UpDate
bool UpDate(double 経過フレーム)
summary&gt;現在のコマ番号を取得
Definition: Anime.h:64
DXFW::Anime::Counter::Counter
Counter(Anime &親アニメ)
カウンタを作成
Definition: Anime.h:56
DXFW::Anime
まとめたImageをコマ送りアニメーションとして扱うクラス
Definition: Anime.h:38
DXFW::ImagePack::Release
virtual void Release()
イメージをメモリから開放
Definition: Image.h:393
DXFW::Anime::Add
void Add(Image *追加イメージ)
イメージを追加
Definition: Anime.h:165
DXFW::Anime::GetAnimeTime
int GetAnimeTime() const
合計フレーム時間を返す
Definition: Anime.h:228
DXFW::Anime::SetType
void SetType(AnimeType 再生方法)
Definition: Anime.h:198
DXFW::AnimeType::End
最後まで再生すると、再生方向を反転する
DXFW::Anime::Counter::GetFrame
int GetFrame()
summary&gt;コマの位置を設定
Definition: Anime.h:102