èšäºã®ç¿»èš³ã è±èªçã®ãªãªãžãã«ãSitePointã§å
¬éãããŠããŸã-ã 匷åãªè»œéã°ã©ãã£ãã¯ã©ã€ãã©ãªã§ããGraphicsJSã®çŽ¹ä» ããHTML5ã¯ãææ°ã®Webã®åºç€ã§ãã ãããŠä»æ¥ãã€ã³ã¿ã©ã¯ãã£ããªã°ã©ãã£ãã¯ã¹ãäœæããããšã課é¡ã§ããå ŽåãSVGãCanvasãªã©ã®ãã¯ãããžãŒãæãããéžæãããŸãã Flashã¯å¿ããããŠãããSilverlightã¯Webã®è£ã«äœãçããé³¥ã§ããããµãŒãããŒãã£ã®ActiveXããã³Javaãã©ã°ã€ã³ãèŠããŠãã人ã¯ã»ãšãã©ããŸããã
SVGãšCanvasã®é·æãšçæã¯
ããç¥ãããŠããŸã -äžè¬ã«ãSVGãã€ã³ã¿ã©ã¯ãã£ããªèŠçŽ ãäœæããŠæäœããã®ã«ããé©ããŠãããšããäºå®ã«åž°çããŸãã ããã¯XMLããŒã¹ã®ãã¯ã¿ãŒåœ¢åŒã§ããã
<svg>
ã䜿çšããŠç»åãããŒãžã«ããŒããããšããã®å
éšèŠçŽ ã®ãããããSVG DOMã§å©çšå¯èœã«ãªããŸãã
ãã®èšäºã§ã¯ã
GraphicsJSã«ã€ããŠèª¬æããŸãã ããã¯ãSVGãã¯ãããžïŒIEã®å€ãããŒãžã§ã³ã®
VMLïŒã«åºã¥ãã匷åãªãªãŒãã³ãœãŒã¹ã®ã°ã©ãã£ã«ã«JavaScriptã©ã€ãã©ãªã§ãã ãŸããGraphicsJSã®åºæ¬ãç°¡åã«çŽ¹ä»ãã次ã«2ã€ã®å°ãããªãããå®äŸã§ã©ã€ãã©ãªã®æ©èœã説æããŸãã ãããã®æåã®ãã®ã¯èŠèŠèžè¡ã«æ§ããããŠããŸãã 2ã€ç®ã¯ã50è¡æªæºã®ã³ãŒãã§ã¿ã€ã ãã©ãŒã®ãžã£ã³ã«ã§ã·ã³ãã«ãªã¢ãŒãã²ãŒã ãäœæããæ¹æ³ã瀺ããŸãã
ãªãGraphicsJS
SVGã§ã®äœæ¥ã容æã«ããã©ã€ãã©ãªãããªããããŸã
ãRaphaël ã
Snap.svgã BonsaiJSãæé©ã§ãã ããããã«é·æãšçæããããŸããããããã®è©³çŽ°ãªæ¯èŒã¯ã次ã®åºçç©ã®ããããã®ãããã¯ã«ãªããŸãã ãã®èšäºã¯ãGraphicsJSã®ã¿ã察象ãšããŠããŸãã次ã«ããã®ã©ã€ãã©ãªãåªããŠãããä»ã®è£œåãšæ¯ã¹ãŠéç«ã£ãŠããçç±ã説æããŸãã
ãŸããGraphicsJSã¯éåžžã«è»œéã§ãéåžžã«æè»ãªJavaScript APIãåããŠããŸãã ããŸããŸãªãã©ãŠã¶ãŒã®ç¹å®ã®HTML DOMãšã¯ç¡é¢ä¿ã«ãä»®æ³DOMãšåæ§ã«ãããã¹ãã®æžåŒèšå®ã®è±å¯ãªæ©äŒãæäŸããŸãã
第äºã«ããã®ã©ã€ãã©ãªã®ã³ãŒãã¯
æšå¹Žç§ã«ã®ã¿å
¬éãããŸãã ã
AnyChart㯠ãã€ã³ã¿ã©ã¯ãã£ãããŒã¿ã®èŠèŠåãœãªã¥ãŒã·ã§ã³ã®éçºã«ããããªãŒããŒã®1ã€ã§ãããçŽ3幎éïŒAnyChart 7.0ã®ãªãªãŒã¹ä»¥éïŒåçšè£œåã®ã°ã©ãã£ãã¯ãšã³ãžã³ãšããŠGraphicsJSã䜿çšããŠããããããã®ã©ã€ãã©ãªã¯æŠéæ¡ä»¶ã§ãã¹ããããŠããŸãã ïŒå
責äºé
ïŒç§ã¯AnyChartã®RïŒD責任è
ã§ãããGraphicsJSã®äž»ä»»éçºè
ã§ããïŒ
第äžã«ãä»ã®AnyChart補åïŒã°ã©ãäœæçšJavaScriptã©ã€ãã©ãªïŒãšã¯ç°ãªããGraphicsJSã¯åçšããã³éåçšç®çã®äž¡æ¹ã§èªç±ã«äœ¿çšã§ããŸãã ã©ã€ãã©ãªã¯ãApacheã©ã€ã»ã³ã¹ã®äž
ã§GitHubã§å
¥æã§ããŸãã
第4ã«ãGraphicsJSã«ã¯ãInternet Explorer 6.0以éãSafari 3.0以éãFirefox 3.0以éãOpera 9.5以éã®ãµããŒããªã©ããã©ãŠã¶éã®äºææ§ããããŸãã IEã®å€ãããŒãžã§ã³ã§ã¯ãã©ã€ãã©ãªã¯ä»ã®ãã¹ãŠã®ãã©ãŠã¶ãŒïŒSVGïŒã§VMLã䜿çšããŸãã
æåŸã«ãGraphicsJSã䜿çšãããšãã°ã©ãã£ãã¯ã¹ãšã¢ãã¡ãŒã·ã§ã³ãå¹ççã«çµã¿åãããããšãã§ããŸãã å³æžé€šã®
ã¡ã€ã³ã®ã£ã©ãªãŒã ã芧ãã ãããçãããç« ã
å転ããéæ²³ ã
éš ã
æç¶ãçã«çæãããè ã
15ããºã«ãªã©ã®äŸããããŸãã
APIã®è©³çŽ°ãª
ããã¥ã¡ã³ããšè©³çŽ°ãª
説æã§ã GraphicsJSã®äœ¿çšäŸãããã«èŠã€ãã
ãŸã ã
GraphicsJSã®åºæ¬
GraphicsJSãéå§ããã«ã¯ãã©ã€ãã©ãªèªäœãæ¥ç¶ããå°æ¥ã®æç»ã®ããã«HTMLã³ãŒãã®ãããã¯èŠçŽ ãäœæããå¿
èŠããããŸãã
<html lang="en"> <head> <meta charset="utf-8" /> <title>GraphicsJS Basic Example</title> </head> <body> <div id="stage-container" style="width: 400px; height: 375px;"></div> <script src="https://cdn.anychart.com/js/latest/graphics.min.js"></script> <script> </script> </body> </html>
次ã«ãã¯ãŒã¯ã¹ããŒã¹ãæ§ç¯ãããã®äžã«äœããæãå¿
èŠããããŸããäŸãã°ã
é·æ¹åœ¢ ã
åããŸãã¯ä»ã®
圢ç¶ã§ãã
ãã
ã«CodePenã®äŸã
ãããŸããããã§ããå°ãé²ãã§ã
Deathly Hallowsã®ãµã€ã³ãæããŸãã
ç§ãã¡ã®æåã®åäœ
茪éãè²ããã¿ãŒã³ã®å¡ãã€ã¶ã
å¡ãã€ã¶ããš
ã¢ãŠãã©ã€ã³ã® èšå®ã䜿çšããŠ
ãä»»æã®åœ¢ç¶ãŸãã¯ç·ãè²ä»ãã§ã
ãŸã ã ãã¹ãŠã«ãã¹ïŒå¢çç·ïŒããããŸãããå¡ãã€ã¶ãã¯å³åœ¢ãšéããç·ã§ã®ã¿äœ¿çšã§ããŸãã
GraphicsJSã¯ãå¡ãã€ã¶ããšã¢ãŠãã©ã€ã³ã®äž¡æ¹ã§ãç·åœ¢ããã³æŸå°ç¶ã®ã°ã©ããŒã·ã§ã³ãŸã§ããããã®ãã©ã¡ãŒã¿ãŒã®å€æ°ã®èšå®ãæäŸããŸãã ç·ã¯ç Žç·ã«ããããšãã§ããããã€ãã®ã¿ã€ã«ã¢ãŒãã§ç»åãå¡ãã€ã¶ãããšãã§ããŸãã ãã ãããã®ãããªäžé£ã®é¢æ°ã¯ãã»ãšãã©ãã¹ãŠã®ã©ã€ãã©ãªã«ãããŸãã GraphicsJSãéç«ãããŠããã®ã¯ã
ããããšãã¿ãŒã³ã®å¡ãã€ã¶ããªãã·ã§ã³ã§ãã32ïŒïŒïŒæ¢è£œã®
å¡ãã€ã¶ããªãã·ã§ã³ããéžæã§ããã ãã§ãªããå³åœ¢ãããã¹ãããç¬èªã®ãã¿ãŒã³ãç°¡åã«äœæã§ããŸãã
ããã§ã¯ãæ£ç¢ºã«äœãã§ããããèŠãŠã¿ãŸãããã å°ããªçµµïŒå®¶ã®è¿ãã«ç«ã£ãŠããç·ïŒãæããŠãè²ãšãã¿ãŒã³ã§å¡ãã€ã¶ããŠæŽç·ŽãããŸãã ç°¡åã«ããããã«ã
ãã€ãŒãã¢ãŒãã®ã¹ã¿ã€ã«ã®ã€ã¡ãŒãžã«ããŸãïŒ
ããªã¥ããã«ãªããªãããã«ããŸãïŒã è¡ããïŒ
çµæã¯
CodePenã§è¡šç€ºã§ããŸãã
ã芧ã®ãšãããããã§ã¯å€æ°ã䜿çšããŸããã¯ãŒã¯ã¹ããŒã¹ã«äœããæç»ãããã¹ãŠã®ã¡ãœããã¯ãäœæããããªããžã§ã¯ããžã®ãªã³ã¯ãè¿ããããã䜿çšããŠå€æŽãŸãã¯åé€ã§ããŸãã
ããã«ãGraphicsJSã§ã¯ããã§ãŒã³ã³ãŒã«ïŒ
stage.path().moveTo(320, 330).lineTo(320, 340);
ïŒãç©æ¥µçã«äœ¿çšã§ããŸã
stage.path().moveTo(320, 330).lineTo(320, 340);
ããã«ãããã³ãŒããççž®ã§ããŸãã ãã®æ©èœã¯æ
éã«äœ¿çšããå¿
èŠããããŸãããé©åãªã¢ãããŒãã䜿çšãããšããã§ãŒã³åŒã³åºãã«ããã³ãŒããæ¬åœã«ã³ã³ãã¯ãã§èªã¿ããããªããŸãã
ããã§ãç§ãã¡ãæã£ãŠããåçãåäŸã«æž¡ããè²ä»ãããããã«é Œãããšãã§ããŸããåäŸã§ã次ã®ããªãã¯ããã¹ã¿ãŒã§ããããã§ãã
ããã§ãäŸã¯æ¬¡ã®
ããã«ãªããŸã ã
åçã¯ãã«ãã®ãã€ã©ã³ããŒã瀺ããŠããŸãã 圌ã¯brickãå±æ ¹ã®ã¬ã³ã¬é ãã®åã®è¿ãã«ç«ã£ãŠããŸãã ãã£ã³ã¹ãã€ããã§ãå®éã«ç§ãã¡ã®åçã
èžè¡äœåãšåŒã¶ããšãã§ããŸãããã®èäœæš©ã¯ç§ãã¡ãä¿è·ããããã®ã§ãã ããŠãç§ãã¡ãèšå®ããããã¹ããã¿ãŒã³ã§ã®å
ã®å¡ãã€ã¶ãã®å©ããåããŠãããè¡ããŸãããïŒ
ã芧ã®ãšãããããã¯éåžžã«ç°¡åã§ãã
ããã¹ããªããžã§ã¯ãã®ã€ã³ã¹ã¿ã³ã¹ãäœæããŠãããã¯ãŒã¯ã¹ããŒã¹ã«
ãã¿ãŒã³ãäœæããæåŸã«ãã¿ãŒã³ã«ããã¹ããæ¿å
¥ããå¿
èŠããããŸãã
50è¡æªæºã®ã³ãŒãã§ã¢ãŒãã²ãŒã ïŒã¿ã€ã ãã©ãŒïŒãæç»ããŸã
èšäºã®æ¬¡ã®éšåã§ã¯ãGraphicsJSã䜿çšããŠã
Cookie Clickerã®ãããª
Cookie Clickerã²ãŒã ã50è¡æªæºã®ã³ãŒãã§æç»ããæ¹æ³ã瀺ããŸãã
ãã®ã²ãŒã ã®ååã¯ã颚ã®ç®¡ç人ãã§ãã ãã®äžã§ããŠãŒã¶ãŒã¯ã颚ã®åŒ·ãç§ã®æ¥ã«éããæé€ããçšåå¡ãšããŠæ©èœããŸãã ããã¯ãéšåçã«ãGraphicsJSã®ã£ã©ãªãŒãã
æé çã«çæããããªãŒããå«ããµã³ãã«ã³ãŒãã䜿çšã
ãŸã ã
ã²ãŒã ã®æçµããŒãžã§ã³ã¯ãCodePen ïŒãŸãã¯ãã®èšäºã®æåŸïŒã§
èŠãããšãã§ããŸã ã
ã¬ã€ã€ãŒãzIndexãä»®æ³DOM
ïŒåã®äŸã®ããã«ïŒã¯ãŒã¯ã¹ããŒã¹ãäœæããããšããå§ããŸãã ãããŠãããã€ãã®ãœãŒã¹å€æ°ã宣èšããŸãã
ã²ãŒã ãäœæããããã«ãGraphicsJSã§èŠçŽ ãã°ã«ãŒãåãããªããžã§ã¯ãã§ãã
ã¬ã€ã€ãŒãæäœããæ©èœã䜿çšã§ããŸãã èŠçŽ ãã°ã«ãŒãåããŠãåãå€æŽïŒå€æãªã©ïŒãé©çšããããããå¿
èŠããããŸãã ã¬ã€ã€ãŒã¯ãµã¹ãã³ãã¢ãŒãã§å€æŽã§ããŸãïŒåŸã§èª¬æããŸãïŒãããã«ãããããã©ãŒãã³ã¹ãšãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžããŸãã
ãã®äŸã§ã¯ãã¬ã€ã€ãŒã®æ©èœã¯ãèãã°ã«ãŒãåããèãäœææãåºããããã瀺ãç¢æã§èŠãããªãããã«ããã®ã«åœ¹ç«ã¡ãŸãã ãããè¡ãã«ã¯ãæåã«ç¢æãäœæãã次ã«
stage.layer
ã¡ãœããã䜿çšããŠãäœæ¥é åå
šäœã®ã¬ã€ã€ãŒãäœæããäœæ¥é åã«ç¢æãããäœã
zIndex
ãå²ãåœãŠãŸãã
ããã§ããã®ã¬ã€ã€ãŒã«ããã€ã®èãäœæããŠããããã¹ãã®äžã«è¡šç€ºãããããšã¯ãããŸããã
å€æ
次ã«ã䟿å©ãªå€æçšã®APIã䜿çšããŠèãã¬ã³ããªã³ã°ããé¢æ°ãè¿œå ããŸããããã«ãããèŠçŽ ãšèŠçŽ ã®ã°ã«ãŒãã®äž¡æ¹ã移åãæ¡å€§çž®å°ãå転ãããªãã³ã°ã§ããŸãã GraphicsJSãæäŸããä»ã®æ©èœïŒã¬ã€ã€ãŒããã³ä»®æ³DOMïŒãšçµã¿åãããŠãããã¯éåžžã«åŒ·åãªããŒã«ã§ãã
function drawLeaf(x, y) {
ã芧ã®ãšãããåè¡ã¯åãæ¹æ³ã§äœæãããŸãããå€æãããŸãã çµæã¯éåžžã«çŽ æŽãããã©ã³ãã ãªèã®ãã¿ãŒã³ã§ãã
ã€ãã³ããæäœãã
GraphicsJSã®ãã¹ãŠã®ãªããžã§ã¯ããã¯ãŒã¯ã¹ããŒã¹ãã¬ã€ã€ãŒã¯
ã€ãã³ãã
åŠçã§ããŸã ã å©çšå¯èœãªãã¹ãŠã®ã€ãã³ãã®ãªã¹ãã¯ã
EventType APIã«ãããŸã ã åæã«ãã¯ãŒã¯ã¹ããŒã¹ã¯ã¬ã³ããªã³ã°å¶åŸ¡ã®ããã«
4ã€ã®ç¹å¥ãªã€ãã³ãããµããŒãããŸãã
ã²ãŒã ã®äŸã§ã¯ãåãªããžã§ã¯ãïŒã·ãŒãïŒã«é¢é£ä»ããããã€ãã³ããªã¹ããŒã䜿çšããŠãèã®äžã«ããŠã¹ã眮ããšèã1ã€ãã€æ¶ããŸãã ãããå®çŸããã«ã¯ã
return
åã«ã
drawLeaf
é¢æ°ã®æåŸã«æ¬¡ã®ã³ãŒããè¿œå ããŸãã
path.listen("mouseover", function(){ path.remove(); counterLabel.text("Swiped: " + leavesCounter++); if (gameLayer.numChildren() < 200) shakeTree(300); });
ãããããèãã«ãŠã³ãããããã«ã¬ã€ã€ãŒã䜿çšãããããšãæããã§ãã
if (gameLayer.numChildren() < 200) shakeTree(300);
å®éãããã§ã¯èã®æ°ãä¿åããŠããŸããã èã¯ãããã¬ã€ã€ãŒãŸãã¯å¥ã®ã¬ã€ã€ãŒã«è¿œå ãŸãã¯åé€ãããç·ã§ãããããç§ãã¡ãæã£ãŠããåã®æ°ïŒãããã£ãŠãæ®ã£ãŠããèã®æ°ïŒã远跡ã§ããŸãã
GraphicsJSã©ã€ãã©ãªã䜿çšãããšãHTML DOMã®æœè±¡åã§ãã
ä»®æ³DOMã䜿çšã§ããŸãããã®
ä»®æ³DOMã¯ã軜éã§ãããŸããŸãªãã©ãŠã¶ãŒã§SVG / VMLã䜿çšããä»æ§ã«äŸåããŸããã ãã®ãã¯ãããžãŒã¯ããã¹ãŠã®ãªããžã§ã¯ããšã¬ã€ã€ãŒã®å¶åŸ¡ãã°ã«ãŒããžã®å€æã®é©çšãããã»ã¹å
šäœã®è¿œè·¡ãšå¶åŸ¡ãå¯èœã«ããã¡ãœããã䜿çšããã¬ã³ããªã³ã°ã®æé©åãªã©ãå€æ°ã®äŸ¿å©ãªæ©èœã®å®è£
ã«åœ¹ç«ã¡ãŸãã
ããã©ãŒãã³ã¹ã®æé©å
ä»®æ³DOMãšã€ãã³ããã³ãã©ãŒã®ãããã§ãGraphicsJSãŠãŒã¶ãŒã¯ã¬ã³ããªã³ã°ãå¶åŸ¡ã§ããŸãã ã©ã€ãã©ãªããã¥ã¡ã³ãã®èšäºã
ããã©ãŒãã³ã¹ ãã§ããããã®é¢é£æ§ã«ã€ããŠèªãããšãã§ããŸãã
ã²ãŒã ã§ãªãŒããçæãããŠããæç¹ã§ãã¬ã³ããªã³ã°ãäžæåæ¢ãããã¹ãŠã®å€æŽãè¡ããããããã«æŽæ°ããå¿
èŠããããŸãã
function shakeTree(n){ stage.suspend();
èŠçŽ ãè¿œå ãããã®æ¹æ³ã䜿çšãããšãæ°ããèãã»ãŒç¬æã«è¡šç€ºãããŸãã
æåŸã«ã
shakeTree()
ã¡ãœãããåŒã³åºããŠããã¹ãŠã®èãç Žæ£ããŸãã
æçµçµæ
ãããã«
HTML5ã«åãæ¿ãããšWebãå€ãããŸããã ææ°ã®Webã¢ããªã±ãŒã·ã§ã³ãåçŽãªãµã€ãã«è³ããŸã§ãã°ã©ãã£ãã¯ã®æäœãå¿
èŠãšããã¿ã¹ã¯ã«ééããããšããããããŸãã ã©ã®ãããªç¶æ³ã§ãå®å
šã«æ©èœãããœãªã¥ãŒã·ã§ã³ãèŠã€ããããšã¯äžå¯èœã§ãããGraphicsJSã©ã€ãã©ãªã«æ³šæããããšããå§ãããŸãã ãªãŒãã³ãœãŒã¹ã³ãŒããšãªãŒãã³ãœãŒã¹ã©ã€ã»ã³ã¹ããããéåžžã«æ©èœçã§çç£çã§ãåªãããã©ãŠã¶ãµããŒããšå€ãã®æ©èœãåããŠããŸãã ããããã¹ãŠããGraphicsJSãèå³æ·±ãã䟿å©ã§ããããŠãã¡ãããå¹æçãªãœãªã¥ãŒã·ã§ã³ã«ããŸãã
ã³ã¡ã³ãã§GraphicsJSã«ã€ããŠã®ãã£ãŒãããã¯ãããã ããã°å¹žãã§ãã ãã§ã«ãã®ã©ã€ãã©ãªã䜿çšããŠããŸããïŒ æ°ãããããžã§ã¯ãã§ãã®ã¢ããªã±ãŒã·ã§ã³ã䜿çšããå¯èœæ§ãæ€èšããæºåã¯ã§ããŠããŸããïŒ ãªãããªãããã§ãªãã®ããç¥ãããšã¯èå³æ·±ãã§ãããã ãšããã§ãç§ã¯çŸåšãæé«ã®ã°ã©ãã£ãã¯JavaScriptã©ã€ãã©ãªã®ãªã¹ããšããããæ¯èŒããèšäºã®äœæã«åãçµãã§ããã®ã§ãã©ã®ã©ã€ãã©ãªã«è¡šç€ºãããã®ããã³ã¡ã³ãã§æžãããšããå§ãããŸãã
ãªã³ã¯é
SitePointã«é¢ãããªãªãžãã«èšäºã®èè
ïŒRoman Lubushkinã