2014-02-16 63 views
0

我試圖給從側面移動的標題設置動畫 - 其中一個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條線,直到動畫結束。有沒有人看到我的代碼會導致這種錯誤?任何幫助將不勝感激。

回答

0

好吧,我想通了 - 問題出在我沒有提供的代碼片段 - 用於與補間引擎接口的Vector2Accessor類。作爲對其他TweenEngine用戶的警告詞 - 不要重新初始化放置訪問值的數組。