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

时间:2013-01-11 15:05:21

标签: flash properties alpha getter-setter jsfl

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

enter image description here

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

看起来像 fl.getDocumentDOM()。setInstanceAlpha(18); 可以设置alpha属性,但 NOT 可以获取它。此外,此方法将假设在当前时间轴/图层/帧中选择实例,我可能不会(因为我在没有打开每个单独符号的情况下迭代库)。

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

2 个答案:

答案 0 :(得分:1)

实际上,我很笨! colorAlphaPercent 是从中读取的正确值。

但是,如果alpha是补间,则无法正确读取。它只会引用动画关键帧的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 =线性)。

答案 1 :(得分:0)

好班!

它是否与转换为关键帧和读取值相同?

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