HTML5を使用してカジノベースのゲームを開発しています。アニメーションは正常に動作していますが、これはあまりスムーズではありません。つまり、ホイールの回転が停止すると、トランジションをスムーズにするために最終的な再配置としてボールを移動しますが、期待どおりではありません。完全なコードはこちら
BallReposition 関数 - アニメーションに現実感を与えるために、ボールの最終的な再配置のためにホイールが動きを停止した後に実行されます。
function ballReposition(){
curX = findNearestOnCircle(curX);
if(curX > deadXRight){
sign = "-";
}else if(curX < deadXLeft){
sign = "+";
}
if(sign == "+"){
curX = parseInt(curX) + ballRepositionIncVal;
curY = Math.floor(Math.abs(getYOnCircle(curX, 130, 1)) + 0.5);
}else{
curX = parseInt(curX) - ballRepositionIncVal;
curY = Math.floor(Math.abs(getYOnCircle(curX, 130, 0)) + 0.5);
}
var xy = normalizeXY(curX, curY);
curX = parseInt(xy.split("-")[0]);
curY = parseInt(xy.split("-")[1]);
surface = document.getElementById("myCanvas");
var surfaceContext = surface.getContext("2d");
//removing older ball image.
surfaceContext.save();
// Translate to the center point of our image
surfaceContext.translate(happy.width * 0.5, happy.height * 0.5);
// Perform the rotation
surfaceContext.rotate(DegToRad(angle));
// Translate back to the top left of our image
surfaceContext.translate(-happy.width * 0.5, -happy.height * 0.5);
surface.getContext("2d").drawImage(happy, 0, 0);
surface.getContext("2d").drawImage(ball, curX, curY);
console.log(curX + curY);
surfaceContext.restore();
ballRepositionIncVal-=5;
if(ballRepositionIncVal <= 0){
clearInterval(myIntervalVar);
}
}
その他の機能詳細 -
- drawCanvas - 画像をロードし、画像がロードされると、ホイールを回転させてボールを反時計回りに動かすループ関数の呼び出しを開始します。
- normalizeXY - ボールをいくつかの個別の位置、つまりホイール数の下の適切な位置に配置するために使用されます。
編集 -ここで更新されたフィドル構成