Flash 如何获取实例上的alpha值(在JSFL中)?

Flash 如何获取实例上的alpha值(在JSFL中)?,flash,properties,alpha,getter-setter,jsfl,Flash,Properties,Alpha,Getter Setter,Jsfl,如果我在舞台上的一个实例上使用简单的Alpha颜色效果,我如何通过JSFL访问它 实例的*.colorAlphaAmount和*.colorAlphaPercent无法访问上图的值。它只对“高级颜色”效果有用 它看起来像fl.getDocumentDOM().setInstanceAlpha(18)可以设置alpha属性,但无法获得它。此外,此方法将假定实例是在当前时间线/层/帧中选择的,而我可能不会这样做(因为我正在迭代库,而没有打开每个单独的符号) 在其他地方的实例中有隐藏的alpha值吗

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

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

它看起来像fl.getDocumentDOM().setInstanceAlpha(18)可以设置alpha属性,但无法获得它。此外,此方法将假定实例是在当前时间线/层/帧中选择的,而我可能不会这样做(因为我正在迭代库,而没有打开每个单独的符号)


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

事实上,我很笨colorAlphaPercent是正确的读取值

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

因此,对于简单的线性、easeIn和easeOut tweens,我开发了这个MathUtils类,它可能对其他试图从tween动画中读取alpha和其他值(x、y、scale、skew、rotation)的人有所帮助

您可以将以下内容放在它自己的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:为开始帧指定的松弛值,通常介于-100和100之间(0=线性)。

不错的类

它的工作原理是否与转换为关键帧和读取值相同


如果是这样的话,这是一个非常好的主意(希望我们在CS7中不需要它!)

我不能100%确定它会产生与通过逐帧转换完全相同的值,但肯定有一个“宽松”因素。我不确定它是否比Greensock Tweenmax的立方、五次、正弦或其他类型的轻松类更具可比性,但肯定比线性类更好!(顺便说一句,不知道是谁否决了你的帖子,我重新发布了它以保持平衡:D)