Я пытаюсь создать фильм с автоматическим перемоткой с использованием маски градиента в Flash CS4 с использованием AS3. единственная проблема, с которой я сталкиваюсь, - это когда клип достигает конца временной линии, maskingLayerMC теряет свой градиент. поэтому, пока фильм перематывается, маскирующий слой не имеет градиента. он восстанавливает свой градиент, когда игровая точка достигает первого кадра и снова начинает играть.Программный перемотка видеоролика удаляет градиентную маску (FlashCS4/AS3)
Я попытался добавить буковые свойства .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;
, кажется, что проблема с функцией prevFrame(), так просто добавляя свойства как только внутри функции playDirection недостаточно. поэтому следующий код, к сожалению, не работает.
addEventListener(Event.ENTER_FRAME, playDirection);
function playDirection(e:Event):void
{
maskingLayerMC.cacheAsBitmap = true;
maskedLayerMC.cacheAsBitmap = true;
if (playBackwards == true)
{prevFrame();}
else
{play();}
}
, похоже, не является проблемой ключевого кадра. чтобы проверить вашу теорию, я добавил функцию перемотки клипа до того, как он достигнет конца. маскирующий слой по-прежнему теряет эффект градиента. Кроме того, можно ли рассматривать смягчение в вашем программном решении? – TheDarkIn1978
Извините, мой облегчающий вопрос был немым. пожалуйста, не обращайте внимания. – TheDarkIn1978