我有一個遊戲,我轉換到我的Android手機。我嘗試了兩種渲染方式,發現CPU模式比我的類型遊戲更適合GPU。在GPU模式下,遊戲存在很多延遲,而圖形並不像CPU模式那樣鋒利。遊戲的目的是殺死來自屏幕頂部的敵人,然後觸及底部。當遊戲開始的時候,它根本就不是遲鈍的,但是當屏幕上有幾個敵人時它開始滯後,並且它們開始快速下降。這是產生敵人的代碼:如何優化我的Android Flash遊戲?
function makeEnemies():void
{
var chance:Number = Math.floor(Math.random() * 150);
if (chance <= level && enemies.length < 4)
{
tempEnemy = new Enemy();
tempEnemy.x = Math.round(Math.random() * 480);
tempEnemy.cacheAsBitmap = true;
addChild(tempEnemy);
tempEnemy.scaleX = 1.5;
tempEnemy.scaleY = 1.5;
enemies.push(tempEnemy);
tempEnemy.speed = enemyBaseSpeed + ((level - 1) * speedLevelInc);
if (tempEnemy.speed > MAX_SPEED)
{
tempEnemy.speed = MAX_SPEED;
}
}
}
function moveEnemies():void
{
var tempEnemy:MovieClip;
for (var i:int =enemies.length-1; i>=0; i--)
{
tempEnemy = enemies[i];
if (tempEnemy.dead)
{
score++;
score++;
roachLevel.score_txt.text = String(score);
enemies.splice(i,1);
}
else
{
tempEnemy.rotation += (Math.round(Math.random()*.4));
tempEnemy.x -= (Math.sin((Math.PI/180)*tempEnemy.rotation))*tempEnemy.speed;
tempEnemy.y += (Math.cos((Math.PI/180)*tempEnemy.rotation))*tempEnemy.speed;
if (tempEnemy.x < 10)
{
tempEnemy.x = 11;
}
if (tempEnemy.x > stage.stageWidth - offset)
{
tempEnemy.x = stage.stageWidth - offset;
}
if (tempEnemy.y > stage.stageHeight)
{
removeEnemy(i);
lives--;
roachLevel.lives_txt.text = String(lives);
}
}
}
}
此代碼總是循環產生多個敵人。我所有的圖像都已轉換爲位圖。有沒有其他方式讓我的比賽沒有滯後?他們得到的速度越快,他們擁有的時間越長,用戶也不能再殺了他們。請幫忙!