其实我很笨!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 = 线性)。