私は、雪玉を投げる JavaScript ゲームに取り組んでいます。飛行経路中にできるだけ頻繁に雪玉をレンダリングする必要があります。Chrome は、style.left プロパティと style.top プロパティの設定を含むすべての計算を行いますが、雪玉が目的地に到達するまで実際に再描画することはありません。Opera にはこの問題はありません。
関連するポイントは、alert() の使用が明らかな問題であることを除いて、alert()
after をrenderSnowball()
配置すると問題が修正されることです。
これまでの私のコードは次のとおりです。
function throwSnowball()
{
var theta = parseFloat(angleField.value) * Math.PI/180 ;
var Vir = parseFloat(velocityField.value) ;
if (!isNaN(Vir) && !isNaN(theta) )
{
Vix = Math.cos(theta) * Vir * 50;
Viy = Math.sin(theta) * Vir * 50;
time = new Date() ;
var timeThrown = time.getTime() ;
while (snowballPosY > 0)
{
current = new Date() ;
var currentTime = current.getTime() ;
var timeElapsed = (currentTime - timeThrown)/5000 ;
snowballPosX += Vix * timeElapsed;
snowballPosY += Viy * timeElapsed;
Viy -= GRAVITY * timeElapsed ;
renderSnowball() ; //renderSnowball() sets the style.left
// and style.top properties to snowballPosX pixels
// and snowballPosY pixels respectively
timeThrown = currentTime ;
}
snowballPosX = 0 ;
snowballPosY = 50 ;
renderSnowball() ;
}
}