java(LibGDX)更改参与者的颜色
因此,我有一个扩展了Actor
的类,我试图改变它的alpha值objectPreview
是该类的一种类型:
@Override
public void display() {
...
// remove previous object preview from stage
objectPreview.remove();
...
// add a translucent preview of where the object will be added
objectPreview.getColor().a = 0.5f;
stage.addActor(objectPreview);
...
stage.draw();
}
这是我的自定义Actor
的draw
方法:
@Override
public void draw(Batch batch, float alpha) {
batch.enableBlending();
batch.draw(texture, pos.x, pos.y);
}
每个帧调用display
方法,objectPreview
是添加到stage
的Actor
但是,修改objectPreview
的alpha值不起作用
否则,这将按预期工作,在屏幕上放置Actor
的预览,并每帧清除/重画一次
我还尝试了setColor()
方法,但这不起作用。即使我改变r,g,b值,也不会发生任何事情;对象仍然是原始的Actor's
纹理
为什么演员的角色没有改变
# 1 楼答案
当您将Actor子类化时,它将由您在
draw
方法中应用自己的颜色。我不确定他们为什么没有将其构建到Actor类中,除了可能有很多可能使用颜色的方法,或者因为一些演员没有任何与他们相关的视觉效果,所以应用颜色会浪费时间首先,请注意,传递到draw方法的第二个参数是
parentAlpha
,而不是您标记的alpha
。这是因为父母的阿尔法应该乘以孩子的阿尔法,以获得适当的淡入淡出效果因此,更新的
draw
方法应该如下所示:还请注意,如果您想利用Actor已经存在的
scaleX
和scaleY
字段,那么您也可以相应地修改draw
方法来使用它们