
èšäºã®ç®çïŒ
- åçãªã³ã³ãã³ãããªã³ã¯ãããã³ã³ã³ãããŒã«ããµããŒãããCanvasãã«HTMLããŒãžã«åºã¥ãå®è£ ã¡ã«ããºã ãæ€èšããŠãã ããã
- ãã®ã¡ã«ããºã ã䜿çšã§ãããã©ããããããŠã²ãŒã ãããããã«å€ãããã©ãããç解ããŠãã ããã
匷ã¿ïŒ
- Canvasã¯å žåçãªHTMLèŠçŽ ã§ãããããHTML DOMã«ç°¡åã«åã蟌ãããšãã§ããŸãã
- Canvasã¯äœã¬ãã«ã®APIãæã¡ãéåžžã®ã©ã¹ã¿åœ¢åŒããµããŒãããŠããããé«éã§ãã
匱ç¹ïŒ
- Canvasã¯HTML DOMãå éšçã«ãµããŒãããŠããªãããã䟿å©ãªã³ã³ãã³ãããªã³ã¯ãããã³ã³ã³ãããŒã«ãCanvasã«é 眮ããããšã¯ã§ããŸããã
- äœã¬ãã«APIã¯åçŽããããããJavaScriptã©ã€ãã©ãªã䜿çšãããšããã©ãŒãã³ã¹ãå¿ ç¶çã«äœäžããæçµçã«Canvasã®é©çšç¯å²ãå¶éãããŸãã
ãããç解ããæè¯ã®æ¹æ³ã¯ãåçŽã§ã¯ãããåçŽãªäŸãäœãããšã§ãã äŸã¯ããªã³ã¯äžã®è³æãèªãããšã§æçåããã圢ã§åŸãããç¥èã®ç§çãªäžè¬åãšããŠã³ã³ãã€ã«ãããŸãïŒ
ãã£ã³ãã¹ã®ãªãã¡ã¬ã³ã¹
ãã£ã³ãã¹ãã¬ãŒãã³ã°
ãã£ã³ãã¹ã®äŸ
èå³æ·±ãèšäºããŒã1
èå³æ·±ãèšäºããŒã2
GitHab-eã®ãµã³ãã«ã³ãŒãïŒãã£ã¹ã¯ãããã©ãŠã¶ãŒã§htmãã¡ã€ã«ãéãã ãïŒ
ãã¢ã®äŸïŒçµæããã°ãã確èªïŒ
äœæ¥ç°å¢
éçºç°å¢ïŒ
ã¡ã€ã³ãã©ãŠã¶ãŒã¯FFïŒWindowsãLinux MintïŒã䜿çšããŸãã
CRãšIEã®äºææ§ã確èªããã«ã¯ïŒWindowsïŒã
次-å©çšå¯èœãªã¬ãžã§ããïŒè©³çŽ°ã¯æåŸã«ãããŸãïŒã
IDE for Widows-Visual Studio Communityãã¡ã¢åž³ã ã¹ã¿ãžãªã¯ç¡æã§ãã³ãŒããé©åã«ãã©ãŒãããããèªåè¿œå ã蚱容ããæãããªãšã©ãŒãæ€åºããŸãïŒããšãã°ãæ¬åŒ§ã¯çç¥ãããŸãïŒã
Linux IDE-geditã
建ç¯çã¢ãããŒãïŒ
ããã³ããšã³ããéçãµãŒããŒã
å€éšã©ã€ãã©ãªãªãã®ãã€ãã£ãAPIã ã©ã€ãã©ãªã®æ¬ åŠã¯ããèªäœã§çµããã§ã¯ãªããä»ã®ãšããããããªãã§å®è¡ã§ããŸãã
ã³ãŒãæ§é ïŒ
ã³ãŒãã1ã€ã®ãã¡ã€ã«ã«è©°ã蟌ãããšãã§ããŸãïŒããŸãã³ãŒãã¯ãããŸããïŒã ããããæ確ã«ããããã«ããã¡ã€ã«ã«åå²ããããšããå§ãããŸãã
HTMLããŒãžïŒhtml_page_on_canvas.htm
æ±çšã³ãŒãïŒhtml_page_on_canvas_main.js
ã¢ãã«ç®¡çã³ãŒãïŒhtml_page_on_canvas_model.js
ãã£ã³ãã¹ã¬ã³ããŒã³ã³ãããŒã«ã³ãŒãïŒhtml_page_on_canvas_canva.js
ã°ããŒãã«å€æ°ïŒ
ã°ããŒãã«å€æ°ã¯æªãã§ãã ã°ããŒãã«ãªç¯å²ãªãã§ç掻ããã®ã¯é£ããã§ãã 劥åæ¡ãšããŠãã°ããŒãã«APELSERGãªããžã§ã¯ããäœæãããããã«ãã¹ãŠã®é¢æ°ãšã°ããŒãã«å€æ°ãä¿åãããŸãã
ã¡ã€ã³ïŒäžè¬çãªæ©èœ
ã¢ãã«ïŒã¢ãã«å€æŽé¢æ°
MODEL.DATAïŒã¢ãã«ããŒã¿
CANVAïŒã¢ãã«ã¬ã³ããªã³ã°é¢æ°
CONFIGïŒã°ããŒãã«å€æ°
ã¢ãã«
åºæ¬çãªæ©èœæ§é ã¯ãå€å žçãªMVCãã¿ãŒã³ã«åºã¥ããŠããŸãã
ã¢ãã«ã®åœ¹å²ã¯MODEL.DATAããŒã¿ã«ãã£ãŠå®è¡ãããŸã
CANVAæ©èœã«ãã£ãŠå®è¡ããã圹å²ã衚瀺ãã
ã³ã³ãããŒã©ãŒã®åœ¹å²ã¯MODELé¢æ°ã«ãã£ãŠå®è¡ãããŸã
ããŒãžãªããžã§ã¯ãã®å®è£ ãå§ããŸãããã ãã®ãããªäººãããŸãããåºåãããŒã§éªãéããšãã¯ãã€ãããã奜ãã§ããã ããŒãžã®èæ¯å šäœã«éªãéãããã§ãã ããã§å®è£ ã§ããŸãã äžè¬ã«ãããã«ã¯éæ³ã¯ãããŸãã-Canvasã¯ãã®ãããªã¿ã¹ã¯ãå®è£ ããããã«èšèšãããŠããŸãã
åã¹ããŒãã¬ãŒã¯ã¯ãªããžã§ã¯ãã§ãã
APELSERG.MODEL.Flake = function (flakeX, flakeY, flakeSize, flakeColor) { this.BaseX = flakeX; this.X = flakeX; this.Y = flakeY; this.Size = flakeSize; this.Color = flakeColor; }
ãã€ããã¯ã¹ã®å¯èœæ§ã¯ãªããžã§ã¯ãã«åºæã§ãããšèããããšãéèŠã§ã-XãšYã®ããããã£ã®å€æŽã
ééªãæŽçããããã«ãéªçã®é åãäœæãããŸãã
APELSERG.MODEL.MakeFlakes = function (flakeNum) { var flakes = []; var color = "white"; for(var n = 0; n < flakeNum; n++) { var x = Math.round(Math.random() * APELSERG.CONFIG.SET.PicWidth); var y = Math.round(Math.random() * APELSERG.CONFIG.SET.PicHeight); var s = n % APELSERG.CONFIG.SET.FlakesSize; var flake = new APELSERG.MODEL.Flake(x, y, s, color); flakes.push(flake); } return flakes; }
æ確ã«ããããã«ãã³ã³ãã³ããåçã«ãªããŸãã ãããè¡ãããã«ãåè¡ã¯åå¥ã®ãªããžã§ã¯ããšããŠä¿åãããŸãã
APELSERG.MODEL.ContentLine = function (text, textX, textY, textColor) { this.Text = text; this.X = textX; this.Y = textY; this.Color = textColor; this.FontHeight = 0; }
ããã§ã¯ã移åã«å ããŠããã©ã³ãã®ãµã€ãºãå€æŽããå¯èœæ§ïŒFontHeightããããã£ïŒããã€ããã¯ã¹ã«çµã¿èŸŒãŸããŠããŸãã ãŸãã¯ã客芳çã«åèªãæåãåå¥ã«ä¿åããããšãã§ããŸãã ãã®ãããããŸããŸãªåçèŠèŠå¹æãã·ãã¥ã¬ãŒãã§ããŸãã
ã³ã³ãã³ãã«ã€ããŠã¯ãå¬ãããŒãã«ããç«¥wereãéžæãããŸããã
ROOT.MODEL.MakeContent = function () { var color = "white"; var pointX = 0; var pointY = ROOT.CONFIG.PROC.CanvaID.height; // var addY = 30; // var Cnt = 0; // var content = []; content.push(new ROOT.MODEL.ContentLine(" ", pointX, pointY + addY * Cnt++, color)); content.push(new ROOT.MODEL.ContentLine(" ", pointX, pointY + addY * Cnt++, color)); content.push(new ROOT.MODEL.ContentLine(" ", pointX, pointY + addY * Cnt++, color)); content.push(new ROOT.MODEL.ContentLine(" ", pointX, pointY + addY * Cnt++, color)); return content; }
å ¬å¹³ã«èšããšãé¢æ°ã«ã³ã³ãã³ããä¿åããããšã¯è¯ããªããšèšãå¿ èŠããããŸãã ãã®ã¢ãããŒãã¯ãäŸãšããŠã®ã¿äœ¿çšãããŸãã äœæ¥ç°å¢ã§ã¯ãããšãã°WebãµãŒãã¹ããåçã³ã³ãã³ããããŒãã§ããŸãã
ã¢ãã¡ãŒã·ã§ã³
æè¿ã®ãã©ãŠã¶ã®ã¢ãã¡ãŒã·ã§ã³ã«ã¯ãwindow.requestAnimationFrameãšããç¹å¥ãªæ©èœããããŸãã ããã¯å žåçãªã¢ã¯ãã£ããŒã·ã§ã³ã³ãŒãã§ãã
//-- window.MyRequestAnimationFrame = (function (callback) { return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function (callback) { window.setTimeout(callback, 1000 / 60); }; })(); //-- MyAnimation = function () { //-- //-- Canvas //-- window.MyRequestAnimationFrame(function () { MyAnimation(); }); }
ãã®äŸãããããããã«ãæ©èœçã«requestAnimationFrameã¯1ç§ããã60åã®ã¿ã€ã ã¢ãŠãã§éå§ãããŸãã ãã ããsetTimeoutãšã¯ç°ãªãããã©ãŠã¶ã®åæç»ãµã€ã¯ã«ãšåæãããå®è¡äžã®ããã€ã¹ã®ãªãœãŒã¹ã«é©å¿ã§ãããšããç¹ã§åªããŠããŸãã requestAnimationFrameã®è©³çŽ°ã¯ãã¡ã ã
æ¬ ç¹ã®ãã¡ãã¢ãã«ã§äœããå€æŽããããã©ããã«é¢ä¿ãªãCanvasãåæç»ããããããäžå€®åŠçè£ çœ®ã«ãšã£ãŠããã¯ãªãœãŒã¹éçŽçãªã¿ã¹ã¯ã§ããããšã«æ³šæããå¿ èŠããããŸãã 倧èŠæš¡ãªã¢ãã«ã¯ãå²ãåœãŠãããæéééã§åžžã«åéèšããã³æç»ã§ãããšã¯éããŸããã
CONFIG.SET.CntHandleå€æ°ã䜿çšããŠãã¢ãã«ãå€æŽããç°ãªãrequestAnimationFrameãµã€ã¯ã«ã§ã¬ã³ããªã³ã°ããããã»ã¹ãåé¢ããåçŽãªã¡ã«ããºã ãå®è£ ãããŠããŸãã ã¡ã«ããºã ã¯å®å šã§ã¯ãããŸããããç°¡åã«å¶åŸ¡ã§ããŸãã å質åºæºã¯äž»èŠ³çãªèŠèŠèªèã§ããå¿«é©ã«èŠããå Žåã¯ããã¹ãŠãæ£åžžã§ãã CONFIG.SET.CntHandleã®æ£ããå€ãéžæããããšã¯æ®ã£ãŠããŸãã
äŸã§ã¯ãwindow.requestAnimationFrameãäºææ§ã©ãããŒãªãã§äœ¿çšãããŠããŸãã çµæã¯ããã¹ãŠã®ã¢ãã¡ãŒã·ã§ã³ããã»ã¹ãå¶åŸ¡ããé¢æ°ã§ãã
APELSERG.MAIN.Animation = function () { (APELSERG.CONFIG.SET.CntHandle > APELSERG.CONFIG.PROC.CntHandle) ? (APELSERG.CONFIG.PROC.CntHandle++) : (APELSERG.CONFIG.PROC.CntHandle = 0); if (APELSERG.CONFIG.PROC.CntHandle == 0) APELSERG.CANVA.Rewrite(); if (APELSERG.CONFIG.PROC.CntHandle == 1) APELSERG.MODEL.UpdateContent(); if (APELSERG.CONFIG.PROC.CntHandle == 2) APELSERG.MODEL.UpdateFlakes(); window.requestAnimationFrame(function () { APELSERG.MAIN.Animation(); }); }
ããã€ãã®ã¡ã¢ïŒ
- 次ã®ã¬ã³ããªã³ã°ã®åºæºã¯ãåžžã«ã¢ãã«ã®å€æŽã§ãã ã€ãŸããã¢ãã«ãå€æŽãããŠããªãå ŽåãCanvasã«åæç»ããå¿ èŠã¯ãããŸããã ããšãã°ããã§ã¹ã®ã²ãŒã ãã¢ãã¡ãŒã·ã§ã³åããã®ã¯ã次ã®åãã®åŸã§ã®ã¿æå³ããããŸãã ãããèæ ®ãããšãå Žåã«ãã£ãŠã¯ãäžå€®åŠçè£ çœ®ãå€§å¹ ã«è»œæžã§ããŸãã
- RequestAnimationFrameã¯ãäž»ã«ã¢ãã¡ãŒã·ã§ã³ããã»ã¹ã®å¯èŠæ§ã確ä¿ããããšãç®çãšããŠãããããåŒã³åºãéã®æéãä¿èšŒããªãããã«èšèšãããŠããŸãã ãŸããã¢ãã«ã«ãšã£ãŠãå€ãã®å ŽåãéèŠãªã®ã¯æéééã®å®å®æ§ã§ãã ã¢ãã«å€æŽãµã€ã¯ã«ã¯setTimeoutã«å®è£ ã§ããŸãïŒäŸã«ã¯ç€ºãããŠããŸããïŒã
éªãšã³ã³ãã³ããã¢ãã¡ãŒã·ã§ã³åããããã®åºæºã¯ãã³ãŒãã®ã·ã³ãã«ããšã³ã³ãã¯ããã§ãã
éªçã®ã¢ãã¡ãŒã·ã§ã³ïŒã¢ãã«å€æŽïŒïŒ
APELSERG.MODEL.UpdateFlakes = function () { for (var n = 0 in APELSERG.MODEL.DATA.Flakes) { var flake = APELSERG.MODEL.DATA.Flakes[n]; var dir = 1; if (Math.round(Math.random() * 100) % 2 == 0) dir = -1; var shift = Math.round(Math.random() * 100) % 3; var move = Math.round(Math.random() * 100) % 2 + APELSERG.CONFIG.SET.FlakesMove; // if (((flake.X + shift * dir) < (flake.BaseX + 10)) && ((flake.X + shift * dir) > (flake.BaseX - 10))) { flake.X += shift * dir; } // flake.Size += dir; if (flake.Size > APELSERG.CONFIG.SET.FlakesSize) flake.Size = APELSERG.CONFIG.SET.FlakesSize; if (flake.Size < 0) flake.Size = 0; // flake.Y += move; if (flake.Y > APELSERG.CONFIG.SET.PicHeight) flake.Y = 1; } }
ã³ã³ãã³ãã¢ãã¡ãŒã·ã§ã³ïŒã¢ãã«ã®å€æŽïŒïŒ
APELSERG.MODEL.UpdateContent = function () { for (var n = 0; APELSERG.MODEL.DATA.Content.length > n; n++) { var contentLine = APELSERG.MODEL.DATA.Content[n]; // contentLine.Y -= APELSERG.CONFIG.SET.ContentMove; // if (contentLine.Y > 150 && contentLine.Y < APELSERG.CONFIG.PROC.CanvaID.height - 50) { if (contentLine.FontHeight < APELSERG.CONFIG.SET.ContentFontSize) { contentLine.FontHeight++; } } else { if (contentLine.FontHeight > 0) contentLine.FontHeight--; } } }
ã¢ãã«ãå€æŽããåŸããã£ã³ãã¹ã«ã¬ã³ããªã³ã°ãããŸãã èæ¯ã«ã¯é©åãªåçã䜿çšã§ããŸãã ãã¹ãŠã®ã¬ã³ããªã³ã°ã¯ã1ã€ã®åçŽãªé¢æ°ã«ãã£ãŠå®è¡ãããŸãã
APELSERG.CANVA.Rewrite = function () { var ctx = APELSERG.CONFIG.PROC.Ctx; // ctx.drawImage(APELSERG.CONFIG.PROC.Img, 0, 0); // for (var n = 0 in APELSERG.MODEL.DATA.Content) { var content = APELSERG.MODEL.DATA.Content[n]; if (content.X >= 0 && content.Y >= 0 && content.FontHeight > 0) { ctx.font = content.FontHeight.toString() + "px Arial"; ctx.textAlign = "center"; ctx.fillStyle = content.Color; ctx.fillText(content.Text, APELSERG.CONFIG.PROC.CanvaID.width / 2, content.Y); } } // ( ) for (var n = 0 in APELSERG.MODEL.DATA.Flakes) { var flake = APELSERG.MODEL.DATA.Flakes[n]; ctx.beginPath(); ctx.arc(flake.X, flake.Y, flake.Size / 2, 0, 2 * Math.PI); ctx.fillStyle = flake.Color; ctx.fill(); } }
æ©èœãã¿ã³ãšãªã³ã¯ã®è¿œå
æ©èœãã¿ã³ãšãªã³ã¯ãåçãªããžã§ã¯ãã§ãïŒéªãšã³ã³ãã³ãã«äŒŒãŠããŸãïŒã ãããããããã®ãªããžã§ã¯ãã®ãã€ããã¯ã¹ã¯ç§»åã§ã¯ãªããããŠã¹ãŸãã¯ã¯ãªãã¯ã§ãªããžã§ã¯ãã®äžã«ããŠã¹ã移åãããšè²ãå€åããŸãã
ã³ãã³ãã説æãããªããžã§ã¯ãïŒ
APELSERG.MODEL.Command = function (cmdCode, cmdName, cmdX, cmdY, lengthX, lengthY, cmdColor) { this.Code = cmdCode; this.Name = cmdName; this.X = cmdX; this.Y = cmdY; this.LengthX = lengthX; this.LengthY = lengthY; this.Color = cmdColor; this.SelectColor = 'red'; this.SelectCnt = 0; this.SelectName = false; this.ShowBorder = true; this.FontHeight = 20; }
ãªã³ã¯ã説æãããªããžã§ã¯ãïŒ
APELSERG.MODEL.Link = function (linkUrl, linkName, linkX, linkY, lengthX, lengthY, linkColor) { this.Url = linkUrl; this.Name = linkName; this.X = linkX; this.Y = linkY; this.LengthX = lengthX; this.LengthY = lengthY; this.Color = linkColor; this.SelectColor = 'lightblue'; this.SelectCnt = 0; this.SelectName = false; this.ShowBorder = false; this.FontHeight = 20; }
ãªããžã§ã¯ãã®æ§é ã¯äŒŒãŠããŸãããç¥èŠããããããã«ç°ãªããšã³ãã£ãã£ãšããŠèª¬æãããŠããŸãã
ããŠã¹ã移åãããšããã®åº§æšã¯ã°ããŒãã«å€æ°ã«ä¿åãããŸãã
APELSERG.CONFIG.PROC.CanvaID.addEventListener('mousemove', function (event) { APELSERG.CONFIG.PROC.MouseMoveX = event.clientX - APELSERG.CONFIG.PROC.CanvaID.offsetLeft - APELSERG.CONFIG.SET.PicBorder; APELSERG.CONFIG.PROC.MouseMoveY = event.clientY - APELSERG.CONFIG.PROC.CanvaID.offsetTop - APELSERG.CONFIG.SET.PicBorder; });
ã¢ãã«ãåŠçãããšããããŠã¹åº§æšã¯ãªã³ã¯ãªããžã§ã¯ããŸãã¯ã³ãã³ãã®å Žæãšæ¯èŒãããŸãã
APELSERG.MODEL.CheckMoveFrame = function (frame) { if ((APELSERG.CONFIG.PROC.MouseMoveX > frame.X) && (APELSERG.CONFIG.PROC.MouseMoveX < frame.X + frame.LengthX) && (APELSERG.CONFIG.PROC.MouseMoveY > frame.Y) && (APELSERG.CONFIG.PROC.MouseMoveY < frame.Y + frame.LengthY)) { return true; } return false; }
ããŠã¹ã«ãŒãœã«ããªããžã§ã¯ãã«ããããããšãSelectNameããããã£ãèšå®ãããŸãã
command.SelectName = APELSERG.MODEL.CheckMoveFrame(command);
ã¯ãªãã¯ã¯åæ§ã®æ¹æ³ã§åŠçãããŸãã
APELSERG.CONFIG.PROC.CanvaID.addEventListener('click', function (event) { APELSERG.CONFIG.PROC.MouseClickX = event.clientX - APELSERG.CONFIG.PROC.CanvaID.offsetLeft - APELSERG.CONFIG.SET.PicBorder; APELSERG.CONFIG.PROC.MouseClickY = event.clientY - APELSERG.CONFIG.PROC.CanvaID.offsetTop - APELSERG.CONFIG.SET.PicBorder; }); APELSERG.MODEL.CheckClickFrame = function (frame) { if ((APELSERG.CONFIG.PROC.MouseClickX > frame.X) && (APELSERG.CONFIG.PROC.MouseClickX < frame.X + frame.LengthX) && (APELSERG.CONFIG.PROC.MouseClickY > frame.Y) && (APELSERG.CONFIG.PROC.MouseClickY < frame.Y + frame.LengthY)){ return true; } return false; }
ã¯ãªãã¯ããªããžã§ã¯ãã«åœãããšãSelectCntããããã£ãèšå®ãããŸãã
if (APELSERG.MODEL.CheckClickFrame(command)) command.SelectCnt = APELSERG.CONFIG.SET.CntSelect;
SelectCntã¯ããã¬ãŒã ã匷調衚瀺ãããã¢ãã¡ãŒã·ã§ã³ãµã€ã¯ã«ã®æ°ãèšå®ããŸãã
ã¯ãªãã¯ãè¡ãããèŠçŽ ãç¹å®ããåŸãå¿ èŠãªã³ãã³ããå®è¡ãããããªã³ã¯ããã©ã£ããããããšã¯ãã¯ãé£ãããããŸããã
ã¢ãã¡ãŒã·ã§ã³ã«ãŒãã®åæ¢ãšåéã®å®è£ ãç°¡åã«èª¬æããã®ã¯çã«ããªã£ãŠããŸãã
æåã«ããã©ãŒã ãããŒãããããšãã¢ãã¡ãŒã·ã§ã³ãµã€ã¯ã«ãéå§ãããŸãïŒAPELSERG.MAIN.OnLoadïŒïŒé¢æ°ã®APELSERG.MAIN.AnimationïŒïŒïŒã åæ¢ããã«ã¯ãrequestAnimationFrameã«ãã£ãŠã¢ãã¡ãŒã·ã§ã³ã«ãŒãã®åéãåæ¢ããã ãã§ãã åæ¢ã¯ãAPELSERG.CONFIG.PROC.Stopãã©ã°ãèšå®ãããŠãããšãã«çºçããŸãã requestAnimationFrameã䜿çšããåäžãµã€ã¯ã«ã§cancelAnimationFrameãé©çšããŠãã£ã³ã»ã«ããããšã¯ããã§ã«å®è¡ãããŠãããµã€ã¯ã«ããã£ã³ã»ã«ãããããæå³ããããŸããïŒæ°ãããµã€ã¯ã«ãéå§ãããŸãïŒã ã¢ãã¡ãŒã·ã§ã³ãµã€ã¯ã«ãåéããã«ã¯ãAPELSERG.CONFIG.PROC.Stopãã©ã°ãã¯ãªã¢ããAPELSERG.MAIN.AnimationïŒïŒãéå§ããå¿ èŠããããŸãã ããã¯ãããŠã¹ãŸãã¯ããŒããŒãã®ãF2ããããã«ã¯ãªãã¯ãããšçºçããŸãã
ã¢ãã¡ãŒã·ã§ã³ã¢ãŒãã§ãF1ããæŒããšåæ¢ããŸããããã§ã«cancelAnimationFrameã䜿çšããŠãããAPELSERG.CONFIG.PROC.Stopãã©ã°ãèšå®ããŠããŸããã ããã«ã¯ãªãã¯ã¢ãã¡ãŒã·ã§ã³ã¯åéã§ããŸãã;ãªã»ãããã©ã°APELSERG.CONFIG.PROC.Stopã¯ãããé²ããŸãã ãã®å Žåã®ã¢ãã¡ãŒã·ã§ã³åéã¡ã«ããºã ã¯ããF2ããæŒãããšã«ãã£ãŠã®ã¿æäŸãããŸãã ãF1ãã®åæ¢ã¯ãcancelAnimationFrameæäœã®ã¡ã«ããºã ã瀺ãããã«ç¹ã«è¿œå ãããŸããã
APELSERG.CONFIG.PROC.CanvaID.addEventListener('dblclick', function (event) { if (APELSERG.CONFIG.PROC.Stop) { APELSERG.CONFIG.PROC.Stop = false; APELSERG.CONFIG.PROC.ShowCommands = false; //-- APELSERG.MAIN.Animation(); } }); window.addEventListener('keydown', function (event) { if (event.keyCode == APELSERG.CONFIG.KEY.F1) { window.cancelAnimationFrame(APELSERG.CONFIG.PROC.TimeoutID); } if (event.keyCode == APELSERG.CONFIG.KEY.F2) { APELSERG.CONFIG.PROC.Stop = true; window.cancelAnimationFrame(APELSERG.CONFIG.PROC.TimeoutID); if(APELSERG.CONFIG.PROC.Stop) { APELSERG.CONFIG.PROC.Stop = false; APELSERG.CONFIG.PROC.ShowCommands = false; //-- APELSERG.MAIN.Animation(); } } });
ããŒã¿å ¥åã³ã³ãããŒã«ã®è¿œå
ããŒã¿å ¥åãæ åœããã³ã³ãããŒã«ã§ã¯ããã¹ãŠãããã»ã©æ確ã§ã¯ãããŸããã å€ã®å¢æžãªã©ã®åçŽãªèŠçŽ ã¯ãäžèšã®ããã«å®è£ ã§ããŸãïŒäŸã§ã¯ããããã¯ã+ãããã³ã-ããã¿ã³ã§ãïŒã
ãããã質åãæ¬æ Œçãªå ¥åèŠçŽ ïŒããããããŠã³ãªã¹ããŸãã¯ããŒã¿ã©ã€ã³å ¥åïŒã«é¢ãããã®ã§ããå ŽåãCanvasãã¬ãŒã ã¯ãŒã¯å ã§ã®ãã®ãããªã¿ã¹ã¯ã®å®è£ ã¯ã¯ããã«è€éã§ãã
ãã®å Žåãããããããã€ããªãããã¢ãããŒãã圹ç«ã¡ãŸãã ã€ãŸããããŒã¿ãå ¥åããããã«ãCanvasã«å ããŠãæšæºã®HTML DOMèŠçŽ ã䜿çšãããŸãã èŠçŽ ã¯éçã«äœæãã絶察é 眮ãšZã€ã³ããã¯ã¹ã䜿çšããŠCanvasã®äžã«é ãããšãã§ããŸãã ãŸãã¯ãå ¥åæã«åçã«äœæããŸãã ãã®äŸã¯ã2ã€ã®å ¥åèŠçŽ ã®åçäœæã瀺ããŠããŸãã 1ã€ã®å ¥åèŠçŽ ãCanvasã®äžã«é 眮ãããŸãïŒAPELSERG.MAIN.ShowSettingsTextSpeedïŒïŒé¢æ°ïŒã ãã1ã€ã¯Canvasã®å€éšã«ãããŸãïŒAPELSERG.MAIN.ShowSettingsThemeSelectïŒïŒé¢æ°ïŒã æ©èœçã«ã¯ãäž¡æ¹ã®ãªãã·ã§ã³ã¯æ©èœããŸãããCanvasã®äžã«ããèŠçŽ ã«ã¯ã¹ã±ãŒãªã³ã°ã®åé¡ããããŸãïŒCtrl +ãCtrl-ïŒã
åçãªé©å¿æ§
äž»ãªäŸïŒSnowfallïŒãéçºãããåŸãããã¯ããŸãé¢çœããªãããã«æãããŸããã ãããã£ãŠããã®äŸã¯ãããã¯ããšã«æ¡åŒµãããŠããŸãã ããŒãã®èæ¯ã«ã¯ããã£ã³ãã¹ã®ãã€ããã¯ã¹ã確èªããã³ãããã°ããããã«ãããŸããŸãªãµã€ãºã®åçãç¹å¥ã«éžæãããŸããã
ãã®é¢æ°ã¯ããã€ããã¯ã¹ãæ åœããŸãã
APELSERG.MAIN.CanvasSize = function () { if (APELSERG.CONFIG.SET.PicWidth < Math.round(window.innerWidth * 0.9) && APELSERG.CONFIG.PROC.CanvaID.width != APELSERG.CONFIG.SET.PicWidth) { APELSERG.CONFIG.PROC.CanvaID.width = APELSERG.CONFIG.SET.PicWidth; } else if (APELSERG.CONFIG.SET.PicWidth > Math.round(window.innerWidth * 0.9) && APELSERG.CONFIG.PROC.CanvaID.width != Math.round(window.innerWidth * 0.9)) { APELSERG.CONFIG.PROC.CanvaID.width = Math.round(window.innerWidth * 0.9); } if (APELSERG.CONFIG.SET.PicHeight < Math.round(window.innerHeight * 0.8) && APELSERG.CONFIG.PROC.CanvaID.height != APELSERG.CONFIG.SET.PicHeight) { APELSERG.CONFIG.PROC.CanvaID.height = APELSERG.CONFIG.SET.PicHeight; } else if (APELSERG.CONFIG.SET.PicHeight > Math.round(window.innerHeight * 0.8) && APELSERG.CONFIG.PROC.CanvaID.height != Math.round(window.innerHeight * 0.8)) { APELSERG.CONFIG.PROC.CanvaID.height = Math.round(window.innerHeight * 0.8) } }
ãã®é¢æ°ã¯åçŽãªã¢ã«ãŽãªãºã ã«åŸã£ãŠåäœããŸã-èæ¯åçããŠã£ã³ããŠãµã€ãºãããå°ããå ŽåïŒã¹ã¯ããŒã«èŠçŽ ãèæ ®ããŠïŒãCanvasã¯åçã®ãµã€ãºã«èšå®ããããã以å€ã®å ŽåãCanvasã¯ãŠã£ã³ããŠãµã€ãºã«èšå®ãããŸãã
é©åæ§
CanvasïŒããã³HTML5å šè¬ïŒã¯æ¯èŒçæ°ããèŠçŽ ã§ããããã¹ãŠã®ããã€ã¹ããã³ãã©ãŠã¶ãŒã§ãµããŒããããŠããããã§ã¯ãããŸããã ãŸããHTMLããŒãžã¯åžžã«ã©ãã«ã§ã衚瀺ããå¿ èŠããããŸãããã®ãããHTMLããŒãžã䜿çšãããšäŸ¿å©ã§ãã äºææ§ãšã¯ã次ã®æ°æ©èœã®æè¡çãªãµããŒãã ãã§ã¯ãããŸããã 決å®çãªèŠå ã¯ãããšãã°ãç»é¢ã®ãµã€ãºã解å床ãã³ã³ãããŒã«ã®ååšïŒã¿ããã¹ã¯ãªãŒã³ã®ã¿ïŒãããã»ããµã®ããã©ãŒãã³ã¹ãªã©ã§ãã åºæ¬çãªæ©èœãå®è¡ã§ããªãå Žåãæ°ãããã¯ãããžãŒãçŸããã§ã¯ãããŸããã
HTMLããŒãžãèšèšãããšãã¯ãå¿ èŠãªã¬ãã«ã®äºææ§ã確ä¿ããããã®ã¡ã«ããºã ãå¿ èŠã§ãã ãã®ã¹ããŒãã¡ã³ãã¯ãHTML5ãšCanvasã ãã«é©çšãããããã§ã¯ãããŸããã
ãã®äŸã¯ãã¢ãã«ã®å¥ã®è¡šç€ºã®ã¡ã«ããºã ããå€å žçãªHTMLããŒãžã®åœ¢åŒã§ç€ºããŠããŸãã ããã¯èšäºã®ã¡ã€ã³ãããã¯ã«ã¯åœãŠã¯ãŸããªãããããã¹ãŠãéåžžã«ç°¡åã«è¡ãããŸãã
ãŸããããŒãããã»ã¹äžã«ãäºææ§ã®éèŠãªå åãèå¥ãããŸãã
APELSERG.MAIN.CheckCompatible = function () { if (!window.requestAnimationFrame || screen.width < 1000) { APELSERG.CONFIG.SET.CompatibleType = 1; } }
ãŸããCanvasã®è¡šç€ºãäžå¯èœãŸãã¯æãŸãããªãå ŽåãAPELSERG.MODEL.ContentAsHtmlTextïŒïŒé¢æ°ã䜿çšããŠåçŽãªHTMLããŒãžã圢æãããŸãã
ãã£ã³ãã¹ã®åé¡
Canvasã¯å®æçã«ãé ãããã äœè² è·ã§ãé ããçºçããŸãã 䞻芳çã«-é 延ã®æéãšé »åºŠã¯ãç¹å®ã®ããã€ã¹ãOSãããã³ãã©ãŠã¶ãŒã«ãã£ãŠç°ãªããŸãã åé¡ã®æ¬è³ªã¯ãæããã«ãã·ã³ã°ã«ã¹ã¬ããã®ã€ãã³ãã«ãŒãããã³/ãŸãã¯ã¬ããŒãžã³ã¬ã¯ã¿ãŒã«ãããŸãã