【问题标题】:applying a ColorTransform stops MovieClip from playing应用 ColorTransform 会阻止 MovieClip 播放
【发布时间】:2023-03-17 09:18:02
【问题描述】:

我有一个包含多个图层的影片剪辑,其中一个图层是动画背景形状。让我们将此 MyMovieClip 称为背景形状,实例名称为“mcBackground”;

我正在通过 ActionScript 将 MovieClip 添加到舞台:

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 更改为动画形状?

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

【问题讨论】:

    标签: flash actionscript-3 actionscript


    【解决方案1】:

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

    【讨论】:

    • 很酷,谢谢,我不知道。现在我用另一个执行动画的剪辑包裹了剪辑,而 colorTransform 仍应用于原始形状。它有效。
    【解决方案2】:

    还要感谢 doamnaT(我还没有足够的代表来投票)。我还发现,一般来说,将时间线与主时间线分离是一种很好的做法,巧合的是,它可以避免这样的问题。通常我的主要时间线只有一帧。

    【讨论】:

      【解决方案3】:

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

      这种行为也适用于没有补间的时间线/关键帧。

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

      在实例的子级上设置显示属性不会触发行为,因此将实例包装在额外的影片剪辑中是一个很好的解决方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-12-07
        • 2019-06-04
        • 1970-01-01
        • 1970-01-01
        • 2011-08-21
        • 2015-12-12
        • 1970-01-01
        相关资源
        最近更新 更多