Java 我不懂SpriteAccessor类(通用Tween引擎)
刚刚观看了德梅特凡的第四个LibGDX视频,他使用通用Tween引擎在启动屏幕之间切换。我也不完全理解SpriteAccessor课程。我不想使用一堆我不懂的代码: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
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时发生的情况。插值会发生什么,应该应用在哪个类上。在本例中,它说明如何设置精灵对象的动画。请阅读文档: