AS3を使用してFlashCS4でグラデーションマスクを使用して自動巻き戻しムービーを作成しようとしています。私が抱えている唯一の問題は、ムービークリップがタイムラインの終わりに達すると、maskingLayerMCがそのグラデーションを失うことです。そのため、ムービーが巻き戻されている間、maskingLayerにはグラデーションがありません。再生ヘッドが最初のフレームに到達し、再び再生を開始すると、勾配が回復します。
最後のフレームにも.cacheAsBitmapブールプロパティを追加しようとしましたが、効果がなく、maskingLayerMCはそれでもグラデーションを失います。
--- FIRST FRAME ---
//Gradient Masking
maskedLayerMC.mask = maskingLayerMC;
maskingLayerMC.cacheAsBitmap = true;
maskedLayerMC.cacheAsBitmap = true;
//Automatically Rewind Movie Clip
var playBackwards:Boolean = false;
addEventListener(Event.ENTER_FRAME, playDirection);
function playDirection (e:Event):void
{
if (playBackwards == true)
{prevFrame();}
else
{play();}
}
--- LAST FRAME---
//Change Boolean Variable To Rewind Movie Clip (Place In Last Frame)
stop();
playBackwards = true;
[更新された作業コード]
なぜこれが機能するのか、それが最善の解決策であるのかはわかりませんが。
--- FIRST FRAME ---
//Automatically Rewind Movie Clip With Gradient Masking
maskedLayerMC.mask = maskingLayerMC;
var playBackwards:Boolean = false;
addEventListener(Event.ENTER_FRAME, playDirection);
function playDirection(e:Event):void
{
if (playBackwards == true)
{
prevFrame();
maskingLayerMC.cacheAsBitmap = true;
maskedLayerMC.cacheAsBitmap = true;
}
else
{
play();
maskingLayerMC.cacheAsBitmap = true;
maskedLayerMC.cacheAsBitmap = true;
}
}
--- LAST FRAME---
//Change Boolean Variable To Rewind Movie Clip (Place In Last Frame)
stop();
playBackwards = true;
playDirection関数内に一度プロパティを追加するだけでは不十分であるため、問題はprevFrame()関数にあるようです。したがって、次のコードは、イライラすることに、機能しません。
addEventListener(Event.ENTER_FRAME, playDirection);
function playDirection(e:Event):void
{
maskingLayerMC.cacheAsBitmap = true;
maskedLayerMC.cacheAsBitmap = true;
if (playBackwards == true)
{prevFrame();}
else
{play();}
}