我試圖每隔10秒產生一個對象,它從屏幕左側進入,當它到達屏幕右側或與我的另一個矩形相交時終止。我已經能夠每隔3秒或更長時間產生一個對象,但是如果我嘗試少量產生對象,我的滾動背景會凍結一段時間(可測量到我設置的對象產生時間) 。請注意,我的遊戲的其他部分不受影響(例如,我的對象動畫仍可正常工作)。對象產生時間導致滾動背景凍結
我猜測我的產卵對象的時間安排是干擾我的滾動背景的時間安排,但我無法弄清楚到底發生了什麼。
我的產卵對象時間調度使用該方法(請注意,spawnObject是創建該對象矩形的方法,這是一個陣列的一部分的名稱)設置:
private long lastObjectTime;
lastObjectTime = TimeUtils.millis();
if(TimeUtils.millis() - lastObjectTime > 3000) spawnObject();
我的滾動背景時間表是用這種方法設置:
private float currentBgX;
private float currentBgX1;
private long lastTimeBg;
// background separator for 800x480 background .ong
currentBgX = 800;
currentBgX1 = 800;
// set background to current time
lastTimeBg = TimeUtils.nanoTime();
// move the separator every 100000 nanoseconds
if(TimeUtils.nanoTime() - lastTimeBg > 1000000)
{
// move the separator 1px; 4px
currentBgX -= 1;
currentBgX1 -= 4;
lastTimeBg = TimeUtils.nanoTime();
}
// if the separator reaches the edge, move it back to the start
if(currentBgX == 0)
currentBgX = 800;
if(currentBgX1 == 0)
currentBgX1 = 800;
注意,我使用的是備用的時序安排我的產卵對象,以避免與我的滾動背景時間表干擾審判。我嘗試這樣做:
float timer = 0f;
if (timer >= 3f)
{
spawnObject();
timer = 0f;
}
直接在上面產卵對象的時序安排有完全相同的第一定時調度在相同的效果(基於TimeUtils.millis();)
有誰知道我該怎麼做對象產卵的頻率較低(即間隔超過3秒),而不會讓我的滾動背景凍結?
感謝您的全面回答!我現在正在創建Spawner和Background類,因爲我原本在一個龐大的類中擁有一切。隨着我的兩個新課程(加上我的原創遊戲課程),我還無法看到背景或產卵對象,但我正在研究它。我也在爲所有對象使用一個計時器。當我能夠解決您的解決方案時,我會盡快回復您。乾杯。 – jdubbing