embarcadero の Firemonkey XE2 プラットフォームで (学習目的で) 2D ゲームを作成しています。これは、ゲーム フィールドの視覚的表現という点ではスペース インバンダーに似たゲームですが、はるかに複雑です。
アニメ化された敵をスポーンしようとしています。テンプレート TImage を作成し、それに 6 つの画像を含む BitmapListAnimation を割り当てました。次に、Clone() を使用してクローンを作成します。クローンコードは次のとおりです。
virtual void CreateMe(TForm* pForm);
void CBaseEnemy::CreateMe(TForm *pForm)
{
TImage* pSource = dynamic_cast<TImage*>(this->pToClone);
pSource->Visible = true;
TImage* pDest = dynamic_cast<TImage*>(pSource->Clone(pForm));
pDest->Parent = pForm;
TBitmapListAnimation* pAnimSource = dynamic_cast<TBitmapListAnimation*>(pForm->FindComponent("BitmapListAnimation1"));
pAnimSource->Parent = pDest;
pAnimSource->Start();
TBitmapListAnimation* pAnimDest = dynamic_cast<TBitmapListAnimation*>(pAnimSource->Clone(pForm));
}
それは機能します。非常に複雑です。テンプレート全体 (TImage などのコンポーネントとそのすべての子) を複製する方法を提案できますか?