我正在进行纸牌游戏,并且已经达到了卡被摧毁的地步#34;改变他们被摧毁的团队。我现在只有代码来检查放置的卡旁边的左网格单元格:
if (SCaL > aR)
{
trace("Winner!")
colorTransform2.color = 0
for (var i:int = 0; i<buttons[foundL].getChildAt(0).numChildren; i++)
{
DisplayObject(buttons[foundL].getChildAt(0).getChildAt(i)).transform.colorTransform = colorTransform2
trace(DisplayObject(buttons[foundL].getChildAt(0).getChildAt(i)).transform.colorTransform.color)
}
colorTransform2.color = selectedCard.color
DisplayObject(buttons[foundL].getChildAt(0).graphics)
}
除了一个问题外,这个工作正常: 动画片段内的文字也会改变颜色
我在更改卡片颜色后尝试更改文本颜色转换但没有做任何事情,我也无法在线找到与此问题相关的任何内容。
答案 0 :(得分:1)
应用颜色转换时,它也会影响所有孩子。它实际上并没有改变子对象的颜色转换,因此您无法通过更改子对象的属性来撤消它。相反,渲染系统将任何变换应用于显示对象的孩子。
要避免的方法是不要让文本字段成为你改变颜色的任何东西的孩子。
在你的情况下,你可以添加一个额外的精灵或动画片段图层,以便顶部的动画片段/精灵包含整张卡片,其中包含两个动画片段/精灵片,一个包含你想要改变颜色的东西,一个包含你的东西。想要保持同样的颜色。
答案 1 :(得分:0)
正如已经说过的,colorTransform应用于DisplayObject的整个树,因此它应用于所有它的子/孙子,因此应用于显示对象的不需要的变换是设计糟糕的显示层次结构的标志。
您可以通过将后代添加到另一个容器来更改它,这将取消颜色转换,但是在更改父级时必须小心显示顺序,位置,比例
在某些情况下,您可能会应用逆变换,但通常情况下,colorTransform适用于谨慎的颜色值(整数),在[0..255]之间进行限制,因此您经常会丢失太多信息,因此在保留时无法进行反转可接受的质量(例如,您可以通过应用新的ColorTranform(2.0,2.0,2.0)来反转新的ColorTransform(0.5,0.5,0.5),但这几乎可以做到。任何系数0或接近0都会丢弃(几乎所有来自相应颜色通道的信息,大于1的coeff将剪切值等)