Exemple #1
0
        /// <summary>
        /// スプライトの作成
        /// </summary>
        /// <param name="name">取得、または作成するスプライト名</param>
        /// <param name="tx">基本テクスチャーハンドル</param>
        /// <param name="rc">テクスチャーから切り取る短径</param>
        /// <param name="x">アンカー位置X</param>
        /// <param name="y">アンカー表示位置Y</param>
        /// <returns>描画するスプライトMCDrawSprite</returns>
        public MCSprite GetCreateSprite(string name, MCBaseTexture tx, MCRect rc, float x = float.MinValue, float y = float.MinValue)
        {
            MCSprite sprite = null;
            bool     ret;

            if (tx == null)
            {
                return(null);
            }

            //=====================================
            // スプライト作成
            MCBaseSprite spTmp;

            if (App.SpriteMgr.GetSpriteData(name, out spTmp))
            {
                MCRect rect;
                if (spTmp.GetID() != MCSprite.SpriteID)
                {
                    return(null);
                }
                sprite = (MCSprite)spTmp;
                if (sprite.flags.SpriteType != (int)MC_SPRITE_DATA.SIMPLE)
                {
                    throw new Exception(name + " スプライトは、分割タイプ");
                }
                sprite.GetRect(out rect);
                if (!(rc == rect))
                {
                    return(sprite);
                }
            }
            else
            {
                if (x == float.MinValue || y == float.MinValue)
                {
                    sprite = MCSprite.CreateSprite(App, name, tx, rc, MC_SPRITE_ANCHOR.CENTER);
                }
                else
                {
                    sprite = MCSprite.CreateSprite(App, name, tx, rc, MC_SPRITE_ANCHOR.CUSTOM, x, y);
                }

                if (sprite == null)
                {
                    return(null);
                }
            }

            return(sprite);
        }