アニメーションをさせよう!その2

アニメーションをさせよう!その2




前回でアニメーションの方針が決まりました。
今回はモデルクラスの修正をやってみましょう!

現状のモデルクラスには背景作成用とキャラ作成用のメソッドがありますね。
CreateBackとCreateCharaです。
背景はそのままでいいのでキャラの方にアニメーションさせるための情報を渡すようにします。
アニメーションの情報はModelDataクラスで渡すことにします。
というわけで、ソースを追加しましょう!

ModelData.javaを追加

ModelData.javaを追加しました。

次にメンバ変数を追加しましょう。
必要な物は、アニメーションの一コマの表示領域ですね。
なのでまずはデータを定義します。

ModelData.java
package com.hitman.Model;



//  モデルデータ
public class ModelData
{
    //  シーンの表示領域
    public class DrawArea
    {
        //  コンストラクタ
        public DrawArea( float left, float top, float right, float bottom )
        {
            super();

            m_Left      = left;
            m_Top       = top;
            m_Right     = right;
            m_Bottom    = bottom;
        }

        //  領域取得
        public float    GetLeft()   { return m_Left;    }
        public float    GetTop()    { return m_Top;     }
        public float    GetRight()  { return m_Right;   }
        public float    GetBottom() { return m_Bottom;  }



        private float   m_Left;
        private float   m_Top;
        private float   m_Right;
        private float   m_Bottom;
    }
}

ここからは一コマのことをシーンと呼ぶようにします。

次に、一つのアニメに付き一つの画像を持つ必要があるのでアニメ毎のデータを定義します。
このクラスに↑の表示領域も持っちゃいます。

    //  1アニメの情報
    public class AnimData
    {
        //  コンストラクタ
        public AnimData( String strImageName, TextureResource.TEXTURE_TYPE imageType )
        {
            super();

            m_Image     = App.GetTextureResource().Load( strImageName, imageType );
            m_aDrawArea = null;
        }

        //  シーンの数設定
        public void SetSceneNum( int num )
        {
            m_aDrawArea = new DrawArea[ num ];
        }

        //  シーンの設定
        public void SetSceneData( float left, float top, float right, float bottom, int sceneIndex )
        {
            m_aDrawArea[ sceneIndex ]   = new DrawArea( left, top, right, bottom );
        }

        //  テクスチャ取得
        public Texture  GetTexture()
        {
            return m_Image;
        }

        //  表示領域取得
        public DrawArea GetDrawArea( int sceneIndex )
        {
            return m_aDrawArea[ sceneIndex ];
        }



        private Texture m_Image;
        private DrawArea[]  m_aDrawArea;
    }

このクラスをModelDataクラスで持つようにします。
アニメの数だけ必要なので配列で持てるようにします。

//  モデルデータ
public class ModelData
{
        :
        :

    private AnimData[]                      m_aAnimData;
    private TextureResource.TEXTURE_TYPE    m_ImageType;
}

ついでにテクスチャタイプも持たせるようにしちゃいました。。。
あとはアニメの数の設定、シーンの設定を行うメソッドを追加します。

    //  用途別に作成
    static public ModelData CreateBack()
    {
        return new ModelData( TextureResource.TEXTURE_TYPE.BACK );
    }
    static public ModelData CreateChara()
    {
        return new ModelData( TextureResource.TEXTURE_TYPE.CHARA );
    }

    //  アニメの数設定
    public void SetAnimNum( int animNum )
    {
        m_aAnimData = new AnimData[ animNum ];
    }

    //  アニメ情報の設定
    public void SetAnimData( String strImageName, int sceneNum, int animIndex )
    {
        m_aAnimData[ animIndex ]    = new AnimData( strImageName, m_ImageType );

        m_aAnimData[ animIndex ].SetSceneNum( sceneNum );
    }

    //  シーン情報設定
    public void SetSceneData( float left, float top, float right, float bottom, int sceneIndex, int animIndex )
    {
        m_aAnimData[ animIndex ].SetSceneData( left, top, right, bottom, sceneIndex );
    }

    //  アニメデータ取得
    public AnimData GetAnimData( int animIndex )
    {
        return m_aAnimData[ animIndex ];
    }



    //  コンストラクタ
    private ModelData( TextureResource.TEXTURE_TYPE imageType )
    {
        super();

        m_aAnimData = null;
        m_ImageType = imageType;
    }

これでモデルデータができました。
かなり長くなったので続きはまた今度。。。



<前のページ