ムービークリップのアルファ値を変化させて、フェードインやフェードアウトなどをするときに、そのままやると内包するMCが透けちゃって微妙・・・何てことがあります(下図参照)。

微妙な図

そういうとき、BitmapDataを使ってやるといい感じでした。

主要部分はこんな感じです。

function fade_bitmap( _old_mc:MovieClip, _new_mc:MovieClip, _frame:Number) :Void
{
var copy_old = copyImage(_old_mc);
var copy_new = copyImage(_new_mc);

copy_old._alpha = 100;
copy_new._alpha = 0;

copy_old.tick = 100/((_frame != undefined) ? _frame : 10);

copy_old.onEnterFrame = function() {

// fade
this._alpha -= this.tick;
copy_new._alpha += this.tick;

if (this._alpha<=0) {
delete this.onEnterFrame;

// delete copies
this.removeMovieClip();
copy_new.removeMovieClip();

// show source
_new_mc._visible = true;
}
};
}

function copyImage( _source:MovieClip ):MovieClip
{
_source._alpha =100;
_source._visible = true;

var copy = _root.createEmptyMovieClip("cover_"+_root.getNextHighestDepth(), _root.getNextHighestDepth());
var screen:BitmapData = new BitmapData( _source._width , _source._height ,true);
screen.draw( _source );
copy.attachBitmap(screen,1);
copy._alpha = 100;
copy._x = _source._x;
copy._y = _source._y;

_source._visible = false;

return copy;
}


> サンプル
> ソース

それぞれ別のMCを内包している2つのMCをクロスフェードさせます。
「普通のフェード」は、そのままのMCごとクロスフェード。
「コピーしてフェード」は、一旦BitmapDataでコピーしたダミーを使ってクロスフェードし、最後に元のMCと置き換えています。