@wywm@z[y[W
ŏIXVF2025N15
@ȒPȃAj[V̗Ă݂܂B˂̃V~[VłAOՂ̕\̎d2ނ܂B
@HTMLt@C̓éAGoogle Chromeŕ\[F12]L[ŊJc[N\[X\ŌĂB̗ł́AVXe^C~OIɍsĂ̂ŁArequestAnimetionFrame()\bh𗘗pĂ܂BsetTimeout()\bhsetInterval()\bhł́AŃ^C~OvKv܂B
@́A炩ߕʂɍ쐬Aimg.src = "test1.png"Ƃēǂݍ݂܂BAj[V̊eʂƂclearRect()Ƃ̂ŁAtest1.png̍ۂ̊O킴ƓɂɕsɂāAỎ摜ƂɗpĂ܂BȂ̂ŁA]葁삳Ă܂ƁAO̕\̈ꕔ݂ƂĎcĂ܂܂(x100ŐĂ̂͂̂߂ł)B
@L̃NNbNĕ\ƁA܂A
xw肵āASTART{^ƊJnASTOP{^Œ~
x(1`100)́@[ ]
[START] [STOP]
ƕ\܂BŁAeLXggɂ́A1`100̐lĂB1ƂȂxȂ܂B100ƂɏIĂ܂܂BSTART{^Ə̐˂̃V~[Vn܂܂BSTOP{^ƏI܂B
@Aj[VHTML̃LoX@\𗘗pčŝŁA
<canvas class="cv1" width="800" height="1600">
ƂāA800pxC800px̃LoXAJavaScript̒ŁA
cs1=document.querySelector(".cv1");
ƂāA<canvas>^Ocs1Ɏ擾AɃLoX@\p̂߂ɁA
ctx1=cs1.getContext('2d');
ƂāActx12`ReLXg擾AȉActx1̃\bh𗘗pĕ`悵܂B
@START{^STOP{^́Aꂼ}EXclickCxgœ삷悤ɁA{^onclickɁAstartMotion()CstopMotion()ݒ肵ĂA}EXŃ{^NbNƁAstartMotion()CstopMotion()N܂BftHgł̓{^eLXgĝŁA傫߂ɂȂ悤ɁACSSfont-size:largeƂđ傫߂̕TCYw肵Ă܂B
@startMotion()ł́AŏɁA͂ꂽx擾邽߂ɁAclass="ip1"ƂȂĂ<input>^OAiq1=document.querySelector(".ip1")ƂĒTAiq1valuevpeBiq1.value̕Number()pĐlAϐspeedɑxo܂Bx̒l̃`FbNsA1`100ɓȂꍇɂ́Aux1`100̐lœ́vƕ\܂B̂߂ɁA<p class="msg">^OpӂAm1=document.querySelector(".msg")Ƃ<p>^O擾Am1innerHTMLvpeBɕux1`100̐lœ́vݒ肵܂B<p>^OHTMLLq̒ɂ̂ŁAꂾŕ\܂B
@x̒lmFłActx1clearRect()\bhŕ800px800px̉ʂUAscene()̒ōŏ1Jnێ邽߂ɁAfirstƂtOtrueɂ܂BŌɋOՂ\邽߂finishƂtOfalseɂ܂BŌɁArequestAnimationFrame(scene)ƂāAscene()Ƃo^ƁAƂ́AVXeKȃ^C~Oscene()ĂяoĂ܂B
@jtest2.htmlł́Ascene(t1)́Aŏ1At1t0ɕێ܂BꂪJnɂȂAȌAt2 = t1|t0;ƂăAj[VJn̎t2ׁAt2xpos()ɂAxWx1߂܂Bxpos()ł́ALoX̒[ɗƂŏItOfinish𗧂Ă悤ɂĂ܂Bx1ypos()yWy1߂܂BƍWconsoleɕ\悤ɂĂ܂BdrawImage()\bhgāAŋ߂W(x1, y1)ɏ\AfinishtOfalsełAēxArequestAnimationFrame(scene)ƂAfinishtOtruełAOՂ`悷trajectory()N܂Btrajectory()ł́Afor[vxWypos()ɂΉyW߁AbeginPath()CmoveTo()Clineto()Cstroke()̈A̐\JԂċOՂ}܂B
@jtest3.htmlłAscene()Ŏt2珬xWAyWߏ\Ƃtest2ƓłÄʒuX^bNɐς݂AX^bNoWC[W̘g͈̔͊OɏoĂA̕ɂāA\āAOՂ`Ă悤ɂȂĂ܂B
@stopMotion()ł́AfinishtO𗧂ĂāAscene()ŁAVrequestAnimationFramesȂ悤ɂāAAj[VI܂BAAj[VxIĂA{^oncliskɐݒ肳ꂽstartMotion()CstopMotion()͂̂܂܂Ȃ̂ŁASTART{^}EXŃNbNƁAAj[VĊJ܂B
@ȒPȗłAȏQlɃAj[VĂ݂ĂB
yLz@LłB̊F܂̂x肽A낵肢܂B
yLz@L͂܂łłB