我想创建一个自动回卷电影在Flash CS4中使用渐变蒙版使用AS3。我遇到的唯一问题是当影片剪辑到达时间线结束时,maskingLayerMC失去它的渐变效果。所以在电影倒带时,maskingLayer没有渐变。当播放头到达第一帧并再次开始播放时,它恢复为渐变。编程式倒带影片剪辑删除渐变蒙版(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 2010-02-17 23:01:32
对不起,我的宽松问题是愚蠢的。请忽略。 – TheDarkIn1978 2010-02-17 23:24:54