我試圖給從側面移動的標題設置動畫 - 其中一個Vector2保存其預期的最終位置,另一個保持其從該位置的偏移量(偏移量爲(0,0)表示動畫已完成)。我的調試調用顯示文本到達最終位置,但Universal Tween Engine由於某種原因立即將偏移值設置爲(0,0),而不是補間。LibGDX通用補間引擎將補間值設置爲零
的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條線,直到動畫結束。有沒有人看到我的代碼會導致這種錯誤?任何幫助將不勝感激。