2012年

5月

24日

01)クラスの継承・アニメーションの作成

今日は、まず、次の2点を確認しました。

1)クラスの継承

2)アニメーションの作成方法

 

Flash Builderとの比較で説明していきたいと思いますが、例となるソースコードは下のとおりです。TImageクラスを継承してTImage1クラスを作りました。addCheidに相当するのは、Parentプロパティです。アニメーションは単振動の例です。描画イベントはないかも知れません。タイマーイベントでアニメーションを作りました。Image1.hをincludeすることを忘れずに(入力補完してくれません)。TImage1クラスを作る=カスタムコンポーネントを作る、ということですが、コンポーネントまでは作りませんので、Image1.cppに追加部分を書くだけです。何かわからないコードが自動生成されてついてきますが、そのままにしておいて問題ないようです。次の例では、Picture、Left、TopをTImage1クラスに入れただけです。


#include <vcl.h>
#include "Image1.h"  // <--- 注意!
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
TImage1 *image;
double k = 0.03;  // 単振動の復元力を決める
double vx = 0;  // x方向の速度
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
 : TForm(Owner){
 image = new TImage1(this);
 image->Parent = this;  // <-- 注意!
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender){
 vx += -k*(image->Left - 200);
 image->Left += vx;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClick(TObject *Sender){
 Timer1->Enabled = true;
}

 

クラスの継承とアニメーションの作成については、Flash Builderとほぼ同じと考えていいかと思います。上の例で、タイマーのソースは書いていません。コンポーネントを使いました。こういう点は、つまり、Flashと同じです。Webサイトを検索してみると、多くの人は、C++BuilderをFlash Builder的に使っているのではなく、Flash的に使っているようです。もったいない!