Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我不懂SpriteAccessor类(通用Tween引擎)_Java_Libgdx_Tween - Fatal编程技术网

Java 我不懂SpriteAccessor类(通用Tween引擎)

Java 我不懂SpriteAccessor类(通用Tween引擎),java,libgdx,tween,Java,Libgdx,Tween,刚刚观看了德梅特凡的第四个LibGDX视频,他使用通用Tween引擎在启动屏幕之间切换。我也不完全理解SpriteAccessor课程。我不想使用一堆我不懂的代码: public static final int ALPHA = 0; public int getValues(Sprite target, int tweenType, float[] returnValues) { switch(tweenType){ case ALPHA: returnVa

刚刚观看了德梅特凡的第四个LibGDX视频,他使用通用Tween引擎在启动屏幕之间切换。我也不完全理解SpriteAccessor课程。我不想使用一堆我不懂的代码:

public static final int ALPHA = 0;

public int getValues(Sprite target, int tweenType, float[] returnValues) {

    switch(tweenType){
    case ALPHA:
        returnValues[0] = target.getColor().a;
        return 1;
    default: assert false; return -1;
    }
}

public void setValues(Sprite target, int tweenType, float[] newValues) {
    switch(tweenType){
    case ALPHA: 
        target.setColor(target.getColor().r, target.getColor().g, target.getColor().b, newValues[0]);
        break;
    default: assert false; 
    }
}
有人能给我解释一下这门课吗?这些方法在哪里使用?它们到底是如何工作的


视频链接:

当您调用TweenManagerVariable.updatedeltaTime时,使用函数获取和设置de值,在本例中为精灵的alpha

呼吁 Tween.tospriteVariable,您的tweenType,tweenDuration .targetalphaTargetValue .两个方程式 .easeOutBounce//ease公式 .startyourTweenManagerVariable

您将spriteVariable与tweenmanagervariable链接,因此在发布的函数中,Sprite目标是spriteVariable

这就是所有事物的整合方式

这里有一个我使用过的例子,它很有效

public class Piece {
class PieceTween implements TweenAccessor<Piece> {

    public static final int FALLING     = 1;

    @Override
    public int getValues(Piece piece, int type, float[] values) {
        switch (type) {
        case FALLING:
            values[0] = piece.getPosition().y;
            return 1;
        };
        return 0;
    }

    @Override
    public void setValues(Piece piece, int type, float[] values) {
        switch (type) {
        case FALLING:
            piece.getPosition().y = values[0];
            break;
        };          
    }
};

    // Piece variables
    private TweenManager tweenManager = new TweenManager();

    public Piece() {
        if (Tween.getRegisteredAccessor(Piece.class) == null) {
            Tween.registerAccessor(Piece.class, new PieceTween());
        }
    }

    public void drop(Vector2 position) {
        state = State.Falling;

        Tween.to(this, PieceTween.FALLING, duration)
        .target(position.y)
        .ease(TweenEquations
                .easeOutBounce
                )
        .start(tweenManager);
    }

    public void update(float dt) {
        switch (state) {
        case Falling:
            tweenManager.update(dt);
            if (tweenManager.getRunningTweensCount()==0) {
                state = State.Idle;
            }
            break;
        };
    }       
};

你能发布视频的相关片段吗?一个问题应该是可以回答的,而无需离开现场获取问题资源。此代码从TweenManager调用。它说明了更新tween manager时发生的情况。插值会发生什么,应该应用在哪个类上。在本例中,它说明如何设置精灵对象的动画。请阅读文档: