0

如果我在舞台上的一个实例上使用简单的 Alpha 颜色效果,我如何通过 JSFL 访问它?

在此处输入图像描述

实例的 *.colorAlphaAmount 和 *.colorAlphaPercent 不会访问上图的值。它仅对“高级颜色”效果有用。

它看起来像fl.getDocumentDOM().setInstanceAlpha(18); 可以设置 alpha 属性,但不能获取它。此外,此方法会假定在当前时间线/图层/帧中选择了实例,而我可能不会(因为我正在遍历库而不打开每个单独的符号)。

在其他地方的实例中是否有隐藏的 alpha 值?

4

2 回答 2

1

其实我很笨!colorAlphaPercent是从中读取它的正确值。

但是,如果 alpha 被补间,它将无法正确读取。它只会引用动画关键帧处的 alpha 值,而不是介于两者之间。

因此,对于简单的线性、easeIn 和 easeOut 补间,我开发了这个 MathUtils 类,它可能对尝试从补间动画中读取 alpha 和其他值(x、y、缩放、倾斜、旋转)的其他人有所帮助。

您可以将以下内容放入它自己的 JSFL 文件中,然后将其加载到您需要的任何地方。

MathUtils = {
    pi2: Math.PI/2,
    easeValue: function( pStart, pFinish, pRatio, pEasing ) {
        var diff = pFinish - pStart;

        var eased =     pEasing > 0 ? this.easeOut( pRatio ) : this.easeIn( pRatio );
        var linear =    pRatio;

        var blendRatio =    Math.abs(pEasing);
        var easeBlend =     blendRatio * eased;
        var linearBlend =   (1 - blendRatio) * linear;

        return pStart + diff * (easeBlend + linearBlend);
    },
    easeIn: function( pRatio ) {
        return 1 - Math.sin((1-pRatio) * this.pi2);
    },
    easeOut: function( pRatio ) {
        return Math.sin(pRatio * this.pi2);
    }
};

如何使用这个:

pStart, pFinish:提供您尝试读取的元素的开始值和结束值(换句话说,它是开始关键帧和下一个关键帧的 alpha)。

pRatio:一个从 0.0 到 1.0 的值,表示给定帧的补间距离。通常,可以使用(currentFrameID - startFrameID) / (endFrameID - startFrameID)计算此值。

pEasing:给startFrame的缓动值,通常在 -100 和 100 之间(0 = 线性)。

于 2013-01-11T18:37:38.343 回答
0

好课!

它与转换为关键帧和读取值的工作方式相同吗?

如果是这样,那真是个好主意(希望我们在 CS7 中不需要这个!)

于 2013-01-11T20:36:57.620 回答