前提、実現したいこと
HELLO という文字列を、個々の文字がバウンドしているようなアニメーションを表示したい。
実行環境はローカルのブラウザです。
発生している問題・エラーメッセージ
アニメーションは開始するが、文字の残像がついてしまう。
該当のソースコード
html,javascript
1<div id="container"></div> 2<script type="text/javascript"> 3 4var cvs = document.createElement("canvas"); 5 6cvs.width = 500; 7cvs.height = 500; 8document.getElementById('container').appendChild(cvs); 9 10 11var ctx = cvs.getContext("2d"); 12var gravity = 0.5; 13var bounce = -0.7 14var bottom = 450; 15 16var text1 = new Text("H",100,250,10); 17var text2 = new Text("E",150,250,1); 18var text3 = new Text("L",200,250,5); 19var text4 = new Text("L",250,250,1); 20var text5 = new Text("O",300,250,10); 21 22 23function Text(t,x,y,vy) { 24 var me = this; 25 this.x = x; 26 this.y = y; 27 this.vy = vy; 28 29 this.draw = function(ctx) { 30 ctx.font = '50px serif'; 31 ctx.strokeText(t,me.x,me.y); 32 }; 33 34 this.render = function(){ 35 me.vy += gravity; 36 me.y += me.vy; 37 38 if (me.y + 20 > bottom) { 39 me.y = bottom - 20; 40 me.vy *= bounce; 41 } 42 43 me.draw(ctx); 44 } 45 } 46 47 ctx.clearRect(0, 0, 500, 500); 48 ctx.strokeStyle = "black"; 49 ctx.beginPath(); 50 ctx.moveTo(0, bottom); 51 ctx.lineTo(500, bottom); 52 ctx.stroke(); 53 setInterval(text1.render, 30); 54 setInterval(text2.render, 30); 55 setInterval(text3.render, 30); 56 setInterval(text4.render, 30); 57 setInterval(text5.render, 30); 58</script>
試したこと
Text内のrenderで呼び出されているdrawが、文字の描画を行っていることは確認したが、実装のどこに問題点があるかはわからなかった。

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。