Ming(C++版)を使用して画像を表示するFlashコンテンツを作成してみる.
サンプル
サンプルのビルド
サンプル
画像を表示するだけのサンプルを以下に示す.
#include <stdio.h>
#include <errno.h>
#include <math.h>
#include <mingpp.h>
#define IMAGE_FILE "./MyImage.png"
#define X_MARGIN 20
#define Y_MARGIN 20
int main()
{
// 画像の作成と読み込み
SWFBitmap *image = new SWFBitmap(IMAGE_FILE);
// SWFMovieサイズは画像の一回り大きいものにする
int movie_size_x = image->getWidth() + X_MARGIN * 2;
int movie_size_y = image->getHeight() + Y_MARGIN * 2;
// とにかくSWFMovieがベース.
SWFMovie *movie = new SWFMovie();
// サイズ指定.
movie->setDimension(movie_size_x, movie_size_y);
// 背景色指定.
movie->setBackground(0x00, 0xff, 0xff);
// 動画のレート(fps)を指定.
movie->setRate(0);
// 画像をSWFMovieに置く.
SWFDisplayItem *item = movie->add(image);
// 置いた画像の位置を移動(XYセンタリング).
item->moveTo(X_MARGIN, Y_MARGIN);
// 作成した動画をswfとして出力.
movie->save("sample03.swf");
return 0;
}
今回のサンプルは,画像の一回り大きいSWFMovieに,画像をのせて表示するものである. ので,まず,画像を読み込む.
// 画像の作成と読み込み
SWFBitmap *image = new SWFBitmap(IMAGE_FILE);
画像は
SWFBitmap#SWFBitmap(const char *filename, const char *alpha=NULL)
にて作成する. 引数は,画像ファイルへのパスである. ファイルのサフィックスに応じてコンバートされ,Flashコンテンツ用のフォーマットに変換されるようだ. 現在許されるサフィックスは以下.
.dbl
.gif
.png
.jpg
上記以外のサフィックスだと例外が投げられる. 画像オブジェクトからは,読み込んだ画像のサイズを取得できる.
int getWidth()
int getHeight()
サンプルでは生成した画像のサイズから,SWFMovieのサイズを算出している.
// SWFMovieサイズは画像の一回り大きいものにする
int movie_size_x = image->getWidth() + X_MARGIN * 2;
int movie_size_y = image->getHeight() + Y_MARGIN * 2;
// とにかくSWFMovieがベース.
SWFMovie *movie = new SWFMovie();
// サイズ指定.
movie->setDimension(movie_size_x, movie_size_y);
// 背景色指定.
movie->setBackground(0x00, 0xff, 0xff);
// 動画のレート(fps)を指定.
movie->setRate(0);
あとは,SWFMovieに画像を置いて,画像の位置を指定する.
// 画像をSWFMovieに置く.
SWFDisplayItem *item = movie->add(image);
// 置いた画像の位置を移動(XYセンタリング).
item->moveTo(X_MARGIN, Y_MARGIN);
このように,SWFMovie#add(SWFBlock *character)で取得できる,SWFDisplayItemオブジェクトのメソッド
moveTo(float x, float y)
にて,SWFMovieにaddしたオブジェクトの位置を指定できる. 最後にswfファイルを出力する.
// 作成した動画をswfとして出力.
movie->save("sample03.swf");
以上で,画像を表示するswfファイルが作成できる.
サンプルのビルド
定数IMAGE_FILEの値には,fdbファイルへの絶対パスを設定する. Makefileは以下.
CXXFLAGS=-I ${MING_HOME}/include -L ${MING_HOME}/lib -l ming -g
all: sample03.swf
sample03.swf: sample03
./sample03
sample03: sample03.o
g++ $(CXXFLAGS) $? -o $@
clean:
rm *.o *.swf
depend:
makedepend *.h *.cpp
# DO NOT DELETE