应用ColorTransform会停止播放MovieClip

时间:2009-12-02 03:29:38

标签: flash actionscript-3 actionscript

我有一个由多个图层组成的MovieClip,其中一个图层是动画背景图形。让我们称这个MyMovieClip为背景形状,实例名称为“mcBackground”;

我正在通过以下方法将MovieClip添加到ActionScript的舞台上:

var myMovieClip = new MyMovieClip();
addChild(myMovieClip);

这很好用,当影片剪辑添加到舞台时,它会按预期播放(背景正在移动)。

问题是当我尝试将colorTransform应用于背景形状时,它会停止移动。我正在做的是在MyMovieClip类中:

var ct:ColorTransform = mcBackground.transform.colorTransform;
ct.color = some color value;
mcBackground.transform.colorTransform = ct;

当我这样做时,背景颜色正确,但它不再动画,它似乎停留在第1帧,尽管显示了我在后面的帧中执行的任何代码。所以它看起来像一个显示问题。

这里有什么问题?是否可以将transform.colorTransform更改为动画形状?

如果描述不清楚,请告诉我,我会尝试解释更多。

3 个答案:

答案 0 :(得分:2)

通常,应用于任何时间轴补间对象的动作脚本都会破坏补间。 您可以尝试使用另一个剪辑包装时间轴,并将colorTransform应用于该剪辑。

答案 1 :(得分:1)

当您的动作脚本代码设置实例的任何显示方面(位置,缩放,旋转,Alpha,颜色,过滤器等)时,由于时间轴上的关键帧而导致的任何更改都不会应用于实例了。该实例的显示属性将被冻结' (就时间轴而言)是动作脚本设置属性值的那一刻,并且只能从那时起动作脚本改变。

此行为也适用于没有补间的时间轴/关键帧。

当actionscript对转换/过滤器​​相关的实例执行某些操作时,不会发生此行为,并且按预期执行时间轴。例如,设置DisplayObject.visible不会触发此行为。此外,更改TextField的文本不会触发该行为。

在实例的子级上设置display属性时不会触发该行为,因此将实例包装在额外的movieclip中是一个很好的解决方法。

答案 2 :(得分:0)

还要感谢doamnaT(我还没有足够的代表进行upvote)。我还发现,一般来说,与主时间轴分离的时间表是一种良好的做法,巧合地避免了这样的问题。通常我的主时间轴只有一帧。