gpt4 book ai didi

java - LibGDX ColorAction.restart() 不起作用

转载 作者:行者123 更新时间:2023-11-30 03:06:43 24 4
gpt4 key购买 nike

我正在尝试循环 ColorAction 动画。这是我的代码:

ColorAction action = new ColorAction();
ShapeRenderer shapeRenderer;

@Override
public void create () {

shapeRenderer = new ShapeRenderer();
action.setColor(Color.BLUE);
action.setEndColor(Color.GOLD);
action.setDuration(5);



}

@Override
public void render () {
Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

int fps = Gdx.graphics.getFramesPerSecond();
curFrame++;
if (curFrame == fps*5) {
action.restart();
curFrame = 0;
}

action.act(Gdx.graphics.getDeltaTime());
shapeRenderer.begin(ShapeRenderer.ShapeType.Filled);
shapeRenderer.setColor(action.getColor());
shapeRenderer.rect(100, 100, 40, 40);
shapeRenderer.end();



}

但这不能正常工作。它只播放动画一次然后停止。有人可以解释一下我做错了什么吗?谢谢。

经过几次更改后:

ColorAction actionBtG = new ColorAction();
ColorAction actionGtB = new ColorAction();
SequenceAction sequenceAction;
RepeatAction repeatAction = new RepeatAction();
ShapeRenderer shapeRenderer;
Color blue = new Color(Color.BLUE);

@Override
public void create () {

shapeRenderer = new ShapeRenderer();
actionBtG.setColor(blue);
actionBtG.setEndColor(Color.GOLD);
actionBtG.setDuration(5);

actionGtB.setColor(blue);
actionGtB.setEndColor(Color.BLUE);
actionGtB.setDuration(5);
sequenceAction = new sequenceAction(actionBtG,actionGtB);

repeatAction.setAction(sequenceAction);
repeatAction.setCount(RepeatAction.FOREVER);
}

@Override
public void render () {

repeatAction.act(Gdx.graphics.getDeltaTime());
Gdx.gl.glClearColor(1,1,1,1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
shapeRenderer.begin(ShapeRenderer.ShapeType.Filled);
shapeRenderer.setColor(blue);
shapeRenderer.rect(100, 100, 40, 40);
shapeRenderer.end();


}

最佳答案

问题解决了吗? ...几分钟前我遇到了同样的问题...问题是,如果操作结束,起始颜色(在您的情况下为蓝色)与结束颜色具有相同的颜色。所以你看不到任何 Action !我通过创建一个新实例解决了这个问题,但我认为重置起始颜色也应该有效。我稍后会尝试一下。

这对您来说意味着:尝试再次设置颜色,然后您将重新开始您的操作!

编辑:我现在用我自己的类替换了 ColorAction:

public class ColorTransitionAnimation extends TemporalAction {
private final Color start = new Color();
private final Color end = new Color();
private final Color animatedColor = new Color();
private RepeatType repeatType = RepeatType.REVERSE;

public enum RepeatType { REVERSE, RESTART }

public void setRepeatType(RepeatType repeatType) {
this.repeatType = repeatType;
}

protected void update (float percent) {
float r = start.r + (end.r - start.r) * percent;
float g = start.g + (end.g - start.g) * percent;
float b = start.b + (end.b - start.b) * percent;
float a = start.a + (end.a - start.a) * percent;
animatedColor.set(r, g, b, a);
}

@Override
protected void end() {
super.end();
if(repeatType == RepeatType.REVERSE)
setReverse(!isReverse());

restart();
}

public Color getAnimationColor () {
return animatedColor;
}

public void setStartColor (Color color) {
start.set(color);
}

public void setEndColor (Color color) {
end.set(color);
}

}

关于java - LibGDX ColorAction.restart() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34582931/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com