【问题标题】:LibGDX Universal tween engine setting tween values to zeroLibGDX 通用补间引擎将补间值设置为零
【发布时间】:2014-03-15 21:42:25
【问题描述】:

我正在尝试为从侧面移动的标题设置动画 - 一个 Vector2 保持其预期的最终位置,另一个保持其与该位置的偏移量((0, 0) 的偏移量表示动画已完成)。我的调试调用显示文本到达最终位置,但通用补间引擎出于某种原因立即将偏移值设置为 (0, 0),而不是补间。下面的代码和调试语句:

TweenManager 的初始化:

public void show() 
{       
    ...

    //Set up tween manager
    tweenManager = new TweenManager();
    Tween.registerAccessor(Button.class, new ButtonTweenAccessor());
    Tween.registerAccessor(Vector2.class, new Vector2TweenAccessor());
}

开始动画:

public void showLevel(int levelNumber)
{       
    previewTitle = levels[levelNumber].getTitle();
    previewTitlePos.y = GameConstants.getVirtualHeight() - this.TITLE_SPACE;
    previewTitlePos.x = (GameConstants.getVirtualWidth() / 2) - (font.getBounds(previewTitle).width / (2f * GameConstants.getPpuX()));
    titleOffset = new Vector2(GameConstants.getVirtualWidth(), 0);
    Gdx.app.log("Offset before anim starts:", previewTitlePos.toString());

    Tween.to(titleOffset, Vector2TweenAccessor.VALUE, 1)
        .target(.10f, 0.1f)
        .start(tweenManager);

    Gdx.app.log("Offset after tween.to is called:", previewTitlePos.toString());
}

VirtualWidth 是游戏内部分辨率中窗口的宽度。我将偏移量设置为此值最初是为了将文本“隐藏”到屏幕右侧一屏长度。

然后是渲染方法:

public void render(float delta) 
{       
    spriteBatch.begin();
    if(!previewTitle.isEmpty())
    {
        font.draw(spriteBatch, previewTitle, (previewTitlePos.x + titleOffset.x) * GameConstants.getPpuX(),  (previewTitlePos.y + titleOffset.y) * GameConstants.getPpuY());
        Gdx.app.log("Offset", titleOffset.toString());
    }
    spriteBatch.end();

    tweenManager.update(delta);
}

(我将坐标乘以 PpuX 和 PpuY 值以实现分辨率无关性 - 我正在使用映射到实际窗口分辨率的单个虚拟分辨率)。

调试输出:

动画开始前的偏移量:: [19.0:0.0]

调用 tween.to 后的偏移量:: [19.0:0.0]

偏移量:[19.0:0.0]

偏移量:[0.0:0.0]

偏移量:[0.0:0.0]

偏移量:[0.0:0.0]

偏移量:[0.0:0.0]

偏移量:[0.0:0.0]

偏移量:[0.0:0.0]

偏移量:[0.0:0.0]

等等。再画 40 行左右,直到动画结束。有人在我的代码中看到任何会导致这种情况的错误吗?任何帮助将不胜感激。

【问题讨论】:

    标签: java animation libgdx tween


    【解决方案1】:

    好吧,我想通了——原来问题出在我没有提供的一段代码中——用于与补间引擎接口的 Vector2Accessor 类。作为对其他 TweenEngine 用户的警告 - 不要重新初始化放置访问值的数组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-01
      • 2015-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多