0

我已经在频闪网站上工作了一段时间了http://strobepage.com/

我想让用户为闪光灯选择自己的颜色,这基本上意味着我将能够轻松地覆盖更多的颜色组合并在网站上占用更少的空间。到目前为止,我已经尝试制作 2 个电影剪辑,一个用于每种颜色..并将其作为一个实例和作为一个整体的影片剪辑( MovieClip(colour1) )引用以更改其颜色.. 这有效,但仅在该特定实例中,当用户单击“下一步”以进行时到 ROOT 影片的下一帧(显示交换的影片剪辑),影片剪辑已恢复到其原始状态。

有没有一种方法可以在按钮按下时为影片剪辑永久着色...我似乎认为没有..这就是我想的地方,嘿,为什么不制作一堆包含不同颜色的影片剪辑,然后按下按钮,其中一个影片剪辑被插入到另一个影片剪辑中,该影片剪辑将有 2 个帧在用户选择的影片剪辑之间交换......只是,我不知道如何做到这一点,以及它是否可能。 .

我希望我以一种可以理解的方式解释了这一点.. 有很多电影剪辑哈哈..

无论如何,提前感谢任何可以提出解决方案的人:D

请给出一个 AS3 示例来说明您所解释的内容:D

4

2 回答 2

0

如果您想让它保持轻便和易于维护,您将需要使用代码,而不是时间线框架来获取您的颜色(这也将确保更快地执行闪光灯)。使用ColorTransform很容易做到这一点。下面是我编写的封装该操作的函数;接受要着色的对象作为第一个参数,并接受颜色的十六进制值作为第二个参数。

function tint(obj:Object, color:uint):void {
    /* Colors the object using transform */

    // Pull the individual primaries
    var r:Number = (color >> 16 ) & 0xFF;
    var g:Number = (color >> 8) & 0xFF;
    var b:Number = color & 0xFF;

    // Apply if valid
    if (obj.hasOwnProperty("transform")) {
        obj.transform.colorTransform = new ColorTransform(0,0,0,1,r,g,b,0);
    }
}

例如,假设您在舞台上有一个名为“box”的 DisplayObject,并且想要将其着色为亮蓝色,您将执行以下操作:

tint(box, 0x1b8afc);

希望有帮助。

于 2012-08-30T15:03:28.987 回答
0

为每种颜色创建影片剪辑并放置在相同的 x、y 上。现在让它们都可见=假,并使特定的 mc 为可见=真。使用 colortransform 来反映其他 mc 的变化。

于 2012-08-30T14:17:05.587 回答