代码之家  ›  专栏  ›  技术社区  ›  Scott

Actionscript 3.0颜色插值问题

  •  1
  • Scott  · 技术社区  · 17 年前

    颜色 内插色

    4 回复  |  直到 17 年前
        1
  •  1
  •   jtbandes    17 年前

    这有点不方便,但看起来将其转换为数字是唯一的方法。 Here 是一篇关于它的帖子,代码如下:

    public static function interpolateColor(fromColor:uint, toColor:uint, progress:Number):uint
    {
        var q:Number = 1-progress;
        var fromA:uint = (fromColor >> 24) & 0xFF;
        var fromR:uint = (fromColor >> 16) & 0xFF;
        var fromG:uint = (fromColor >>  8) & 0xFF;
        var fromB:uint =  fromColor        & 0xFF;
    
        var toA:uint = (toColor >> 24) & 0xFF;
        var toR:uint = (toColor >> 16) & 0xFF;
        var toG:uint = (toColor >>  8) & 0xFF;
        var toB:uint =  toColor        & 0xFF;
    
        var resultA:uint = fromA*q + toA*progress;
        var resultR:uint = fromR*q + toR*progress;
        var resultG:uint = fromG*q + toG*progress;
        var resultB:uint = fromB*q + toB*progress;
        var resultColor:uint = resultA << 24 | resultR << 16 | resultG << 8 | resultB;
        return resultColor;  
    }
    
        2
  •  1
  •   Glenn    17 年前

    http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/fl/motion/Color.html#propertySummary

    所以在您的例子中,您所需要做的就是使用颜色类的“.color”属性。例如,要得到实际的颜色,或者只使用“interpolateTransform”函数,它会从ColorTransform转换到ColorTransform。

        4
  •  0
  •   George Profenza    17 年前

    从instanceMovieClip.transform.colortransform获取colorTransfrom,然后使用Color.interpolateTransform对colortransform进行插值?

    我想我不明白你想达到什么目的(为什么你需要插值两个颜色实例?而不是颜色(int)或颜色变换)?