Flash 应用颜色变换可停止播放MovieClip

Flash 应用颜色变换可停止播放MovieClip,flash,actionscript-3,actionscript,Flash,Actionscript 3,Actionscript,我有一个由多个层组成的MovieClip,其中一个层是动画背景形状。让我们把这个背景形状称为MyMovieClip,实例名为“mcBackground” 我通过以下方式将动作脚本中的MovieClip添加到舞台: var myMovieClip = new MyMovieClip(); addChild(myMovieClip); 这很好,当电影剪辑添加到舞台上时,它会按预期播放(背景正在移动) 问题是,当我尝试对背景形状应用颜色变换时,它停止移动。我在MyMovieClip类中做的是: va

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

我通过以下方式将动作脚本中的MovieClip添加到舞台:

var myMovieClip = new MyMovieClip();
addChild(myMovieClip);
这很好,当电影剪辑添加到舞台上时,它会按预期播放(背景正在移动)

问题是,当我尝试对背景形状应用颜色变换时,它停止移动。我在MyMovieClip类中做的是:

var ct:ColorTransform = mcBackground.transform.colorTransform;
ct.color = some color value;
mcBackground.transform.colorTransform = ct;
当我这样做时,背景颜色正确,但它不再有动画,它似乎停留在第1帧,直到显示为止,尽管我在后面的帧中的任何代码都被执行。所以它看起来像是一个显示问题

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


如果描述不清楚,请告诉我,我将尝试进一步解释。

通常,应用于任何时间线中间对象的actionscript都会破坏中间对象。
你可以尝试用另一个剪辑来包装你的时间线,并对该剪辑应用颜色变换。

多亏了doamnaT(我还没有足够的代表投票)。我还发现,一般来说,将时间线与主时间线分离是一种很好的做法,这恰好避免了这样的问题。通常,我的主时间线只有一帧。

当actionscript代码设置实例的任何显示方面(位置、比例、旋转、alpha、颜色、过滤器等)时,由于时间线上的关键帧而产生的任何更改将不再应用于该实例。该实例的显示属性将“冻结”(就时间线而言)为actionscript设置属性值时的显示属性,并且从那时起只能由actionscript更改

这种行为也适用于不带中间层的时间线/关键帧

当actionscript对与转换/筛选无关的实例执行某些操作时,不会发生此行为,并且会按预期执行时间线。例如,设置DisplayObject.visible不会触发此行为。此外,更改文本字段的文本不会触发该行为


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

很酷,谢谢,我不知道这一点。现在,我已经用另一个制作动画的剪辑包装了该剪辑,而颜色变换仍然应用于原始形状。它是有效的。