1 回答

TA貢獻(xiàn)2016條經(jīng)驗(yàn) 獲得超9個(gè)贊
基本上通知Blazor在循環(huán)內(nèi)更新 UI 就足夠了:
StateHasChanged();
但是東西很少。首先,該SetPosition方法不包含任何等待并將同步運(yùn)行。
然后Bounce可以異步,而不是自己創(chuàng)建新任務(wù),以防您不想阻塞主線程。
此外,GameHeight在當(dāng)前 View 的狀態(tài)下,它看起來像是一個(gè)常量或靜態(tài),因此我會在被調(diào)用的方法中直接引用它,而不是將它作為參數(shù)傳遞,但這只是個(gè)人意見。
另一件事是,確保在已經(jīng)“彈跳”時(shí)不會多次調(diào)用彈跳。
而且我認(rèn)為邏輯線圈可以簡化一點(diǎn)。
這是我的建議:
public async Task Bounce()
{
if(Bouncing) return;
Bouncing = true;
while(Ball.CurrentPosition.Y <= GameHeight)
{
Ball.CurrentPosition.Y++;
StateHasChanged();
await Task.Delay(500);
}
// in case View has been resized, make sure Ball is not out of boundaries
Ball.CurrentPosition.Y = GameHeight;
StateHasChanged();
Bouncing = false;
}
- 1 回答
- 0 關(guān)注
- 145 瀏覽
添加回答
舉報(bào)