ãã©ãŠã¶ã§äœããæç»ããåã«ã次ã®3ã€ã®ããšã«ã€ããŠèªåããŠãã ããã
![](https://habrastorage.org/storage2/55a/dec/882/55adec8823722c91f8daa46a129c1688.png)
- å€ããã©ãŠã¶ã®ãµããŒããå¿
èŠã§ããïŒ
çããyesã®å Žåãå¯äžã®éžæè¢ã¯Raphaëlã§ãã IE 7ããã³Firefox 3ãŸã§ã®ãã©ãŠã¶ãŒããµããŒãããŸããRaphaëlã¯ãäžéšã®ã³ã¢ã©ã€ãã©ãªãã¯ãããžãŒããã®ãã©ãŠã¶ãŒã«å®è£ ã§ããªããšããäºå®ã«ãããããããIE 6ã®ãµããŒããå¶éããŠããŸãã
- Androidã®ãµããŒããå¿
èŠã§ããïŒ
Androidã¯SVGããµããŒãããŠããªããããPaper.jsãŸãã¯Processing.jsã䜿çšããå¿ èŠããããŸãã Android 4ãSVGããµããŒããããšããåããããŸãããææ°ã®Androidããã€ã¹ã®ã»ãšãã©ã¯ããããµããŒãããŸããã
- å³é¢ã¯ã€ã³ã¿ã©ã¯ãã£ãã§ããïŒ
RaphaëlãšPaper.jsã¯ãã¯ãªãã¯ããã©ãã°ãã¿ããã«ããæç»èŠçŽ ãšã®å¯Ÿè©±ã«éç¹ã眮ããŠããŸãã Processing.jsã¯ãªããžã§ã¯ãã¬ãã«ã®ã€ãã³ãããµããŒãããŠããªãããããŠãŒã¶ãŒã®åããåŠçããã®ã¯ããªãå°é£ã§ãã Processing.jsã¯ããŒã ããŒãžã«ã¯ãŒã«ãªã¢ãã¡ãŒã·ã§ã³ãæç»ã§ããŸãããRaphaëlãšPaper.jsã¯ã€ã³ã¿ã©ã¯ãã£ããªã¢ããªã±ãŒã·ã§ã³ã«ããé©ããŠããŸãã
Paper.jsãProcessing.jsãRaphaëlã¯çŸåšãWebã®äž»èŠãªæç»ã©ã€ãã©ãªã§ãã 人æ°ãé«ãŸã£ãŠãã2ã3人ã®æ°äººãããŸãããã¡ããããã€ã§ãFlashã䜿çšã§ããŸããããã®äžäœäžäœã¯HTML5ã§ããŸãæ©èœãããã©ãŠã¶ã¡ãŒã«ãŒã®éã§æãåºããµããŒããããŠããŸãã
æãé©åãªãã¬ãŒã ã¯ãŒã¯ãéžæãããšããããžã§ã¯ãã®æåãå€æã§ããŸãã ãã®èšäºã§ã¯ãåã©ã€ãã©ãªã®é·æãšçæã«ã€ããŠèª¬æããé©åãªéžæãè¡ãã®ã«ååãªæ å ±ãæäŸããŸãã
ãã®èšäºã®ã³ãŒãã¯ãã¹ãŠãªãŒãã³ãœãŒã¹ã§ããããã®èšäºããµããŒãããããã«ç¹å¥ã«äœæããããã¢ããŒãžã§å©çšã§ããŸãã
äžè¬çãªç¹åŸŽ
Paper.js | Processing.js | ã©ãã¡ãšã« | |
---|---|---|---|
ãã¯ãããžãŒ | ã¿ã°ãã£ã³ãã¹ | ã¿ã°ãã£ã³ãã¹ | Svg |
èšèª | PaperScript | åŠçã¹ã¯ãªãã | Javascript |
ã®ãã©ãŠã¶ | IE 9 | IE 9 | IE 7 |
ã¢ãã€ã«ãã©ãŠã¶ | ã¯ã | ã¯ã | IOSã®ã¿ |
ã¢ãã« | ãã¯ãã«ãšã©ã¹ã¿ãŒ | ã©ã¹ã¿ãŒ | ãã¯ãã« |
ã«ãŒãã«ãã¡ã€ã«ãµã€ãº | 56 KB | 64 KB | 20 KB |
誰ããJavaScriptãæä»çã«äœ¿çšããŸãããåãã¬ãŒã ã¯ãŒã¯ã¯ç¬èªã®ã¢ãããŒããå®è£ ããŠããŸãã Raphaëlã¯JavaScriptã§çŽæ¥èšè¿°ãããŠããŸãããPaper.jsã¯PaperScriptã䜿çšããProcessing.jsã¯ç¬èªã®èšèªã䜿çšããŸãã ãããã¯ãã¹ãŠãFirefoxãChromeãããã³Safariã§ãµããŒããããŠããŸããInternetExplorerã®å¯äžã®åé¡ã§ããPaper.jsãšProcessing.jsã¯canvasã¿ã°ã䜿çšãããããæäœã§ãIE 9ãå¿ èŠã§ãã
PaperScriptã¯ãã°ããŒãã«åå空éãæ±æããªãã³ãŒããèšè¿°ã§ããããã«ããJavaScriptèšèªã®æ¡åŒµæ©èœã§ãã ããã«ãããJavaScriptã§ã®ç«¶åã®å¯èœæ§ãæžå°ããŸãã PaperScriptã¯ã PointãSizeãªã©ã®æ°åŠçãªããªããã£ããçŽæ¥ãµããŒãããŸãã2ã€ã®ãã€ã³ããçŽ æ°ã§ãããã®ããã«å ç®ã§ããŸãã
Processing.jsã¯ãä»®æ³Javaãã·ã³ã䜿çšããŠåäœããProcessingãšåŒã°ãããã¬ãŒã ã¯ãŒã¯ã«åºã¥ããŠããŸãã varã®ä»£ããã«intãšfloatãå®çŸ©ããJavaã¹ã¿ã€ã«ã®ç¶æ¿ã䜿çšããããšãã§ããŸãã Processing.jsã®ã¹ã¯ãªããã¯Javaã«äŒŒãŠããŸãããããã§ãJavaScriptã§ãããããå€ãã®Javaåºæã®ãã®ãå¿ èŠãšããŸããã
JavaScriptã«ç²ŸéããŠããå Žåã3ã€ã®ã©ã€ãã©ãªã®ãããã䜿çšããŠãåé¡ã¯ãããŸããã
å§ããŸããã
ãŸããåã©ã€ãã©ãªãã€ã³ããŒãããŸãã ãããã®å Žåãããã®ããã»ã¹ã¯ãããã«ç°ãªããŸãã
Paper.jsãæ¥ç¶ããŸã
Paper.jsã¯ãã¹ã¯ãªããã®ã¿ã€ããtext / paperscriptãšããŠå®çŸ©ããæç»ãããã£ã³ãã¹ã¿ãŒã²ããèŠçŽ ã®IDãå®çŸ©ããŸãã
<head> <script src="paper.js" type="text/javascript" charset="utf-8"></script> <script type="text/paperscript" canvas="paperCircle" src="paper_circle.pjs" id="script"></script> </head> <body> <canvas id="paperCircle" class="canvas" width="200" height="200" style="background-color: white;"></canvas> </body>
Processing.jsãæ¥ç¶ããŸã
Processing.jsã¯ãdata-processing-sourcesãã£ã³ãã¹ã¿ã°å±æ§ã䜿çšããŠåæåããŸãã èè ã¯ãã³ãŒããšãã£ã¿ãæ§æã®åŒ·èª¿è¡šç€ºãæ£ãã衚瀺ããããã«ãã¹ã¯ãªããã®.javaæ¡åŒµåãåŠçãã¡ã€ã«ãšãšãã«äœ¿çšããŸããã ä»ã®äœæè ã¯ã.pdeãŸãã¯.pjsæ¡åŒµåã䜿çšããå ŽåããããŸãã ã奜ã¿ã§ã
<head> <script src="processing.js" type="text/javascript" charset="utf-8"></script> </head> <body> <canvas width="200" height="200" class="canvas" data-processing-sources="processing_circle.java"></canvas> </body>
ã©ãã¡ãšã«ã®æ¥ç¶
Raphaëlã¯ãä»ã®JavaScriptãã¡ã€ã«ãšåæ§ã«æ¥ç¶ããŸãã jQueryã®æ¢è£œã®æ©èœããã³ä»ã®ãã¹ãŠã®JSãã¬ãŒã ã¯ãŒã¯ãšé£æºããŠéåžžã«å¹æçã§ãã
<head> <script src="raphael-min.js" type="text/javascript" charset="utf-8"></script> <script src="raphael_circle.js" type="text/javascript" charset="utf-8"></script> </head>
ããã§æãæºåãã§ããŸãã
ãªããžã§ã¯ãæåå³é¢
Paper.jsãšRaphaëlã¯ã©ã¡ããããªããžã§ã¯ãæåã®ã¢ãããŒãã䜿çšããŠæç»ããã»ã¹ãå®è¡ããŸããåãæããCircleãªããžã§ã¯ããååŸããŸãã Processing.jsã¯åã«åãæããäœãè¿ããŸããã 次ã®ã³ãŒãã¯ããããã©ã®ããã«èµ·ãããã瀺ããŠããŸãã ç»é¢ã®äžå¿ã«ãã100 x 100ã®åããå§ããŸãããã
![](https://habrastorage.org/storage2/9d6/1c0/9a8/9d61c09a8ac39af30a1c28f98ab013af.png)
Paper.jsïŒ
var circle = new Path.Circle(new Point(100, 100), 10); circle.fillColor = '#ee2a33';
ã©ãã¡ãšã«ïŒ
var paper = Raphael('raphaelCircle', 200, 200); var c = paper.ellipse(100, 100, 10, 10); c.attr({'fill': '#00aeef', 'stroke': '#00aeef'});
Processing.jsïŒ
void setup() { size(200, 200); } void draw() { background(#ffffff); translate(100, 100); fill(#52b755); noStroke(); ellipse(0, 0, 20, 20); }
åã³ãŒãã¯åãåãæããŸãã éãã¯ãåŸã§ããã§ã§ããããšã§ãã
Paper.jsã¯ã ãã¹ãªããžã§ã¯ããšããŠåãäœæããŸãã ä¿åããŠå°æ¥å€æŽããããšãã§ããŸãã Paper.jsã§ã¯ãcircle.fillColor = 'red'; èµ€ãåãæããcircle.scaleïŒ2ïŒã¯ããã2åã«ããŸãã
Raphaëlã¯ãPaper.jsãšåæ§ã«ããªããžã§ã¯ãæåã¢ãã«ãå®è£ ããŠããŸãã Raphaëlã§ã¯ãcircle.attrïŒ 'fill'ã 'red'ïŒã䜿çšããŠåã®è²ãå€æŽã§ããŸãã circle.scaleïŒ2ã2ïŒ;ãšæžããŠãµã€ãºãå€æŽããŸãã äž»ãªã¢ã€ãã¢ã¯ãåã¯åŸã§ã¢ã¯ã»ã¹ã§ããããããã£ãæã€ãªããžã§ã¯ãã§ãããšããããšã§ãã
Processing.jsã¯ãªããžã§ã¯ãã䜿çšããŸããã ellipseïŒïŒé¢æ°ã¯å€ãè¿ããŸããã Processing.jsã䜿çšããŠåãæããšããã«ãéåžžã®çŽã«ã€ã³ã¯ã§æãå Žåãšåæ§ã«ãäœæãããç»åã®äžéšã«ãªããŸãã ããããã£ãå€æŽã§ããåå¥ã®ãªããžã§ã¯ãã§ã¯ãããŸããã è²ãå€æŽããã«ã¯ãåãåãæããŸãããæåã®åã®äžã«ç°ãªãè²ãæããŸãã
fillïŒïŒé¢æ°ãåŒã³åºããšãäžã«è¡šç€ºããããã¹ãŠã®ããªããã£ãã®è²ãå€ãããŸãã translateïŒïŒããã³fillïŒïŒé¢æ°ãåŒã³åºããåŸããã¹ãŠã®å³åœ¢ãç·è²ã«ãã€ã³ããããŸãã
é¢æ°ã¯äžåºŠã«ãã¹ãŠãå€æŽãããããå®å šã«äºæããªãå¹æãç°¡åã«åŸãããšãã§ããŸãã ç¡å®³ãªé¢æ°ãåŒã³åºããšãçªç¶ãã¹ãŠãç·è²ã«å€ãããŸãïŒ Processing.jsã«ã¯ãå€æŽãåé¢ããããã®pushMatrixïŒïŒããã³popMatrixïŒïŒé¢æ°ãçšæãããŠããŸãããããããåŒã³åºãããšãå¿ããªãã§ãã ããã
Processing.jsã«ãªããžã§ã¯ãããªãããšã¯ãè€éãªå³é¢ãã¯ããã«é«éã«åŠçãããããšãæå³ããŸãã Paper.jsãšRaphaëlã¯ãæç»ããããã¹ãŠã®ãªããžã§ã¯ããžã®ãªã³ã¯ãä¿åããŸããããã«ããã䜿çšãããã¡ã¢ãªéãå¢å ããè€éãªã°ã©ãã£ãã¯ã¹ã§ã¯ã¢ããªã±ãŒã·ã§ã³ã®é床ãèããäœäžããŸãã Processing.jsã«ã¯ãäœæããããªããžã§ã¯ããžã®åç §ãå«ãŸããŠããªããããå³é¢ã®åéšåã¯ã»ãšãã©ã¡ã¢ãªãæ¶è²»ããŸããã ãªããžã§ã¯ãã¢ãããŒãã¯ãåŸã§ãªããžã§ã¯ãã«ã¢ã¯ã»ã¹ããå Žåã«æ£åœåãããŸããããããªããšããªãœãŒã¹ã®ç¡é§ã«ãªããŸãã Paper.jsã䜿çšãããšããªããžã§ã¯ããã©ã¹ã¿ã©ã€ãºããSymbolã䜿çšãããŸããããã¡ãããã¢ããªã±ãŒã·ã§ã³ãååã«éãåäœããããã«äºåã«ãã¹ãŠãèšç»ããå¿ èŠããããŸãã
ããŸããŸãªã¢ãããŒãã«ãããã©ã€ãã©ãªãæäœããã¹ã¿ã€ã«å šäœã決ãŸããŸãã ãã¡ãããããã¯ã¢ãã¡ãŒã·ã§ã³ã®åäœã«ã圱é¿ããŸãã
ããããåãã
åã®å転ã¯ããŸã壮芳ã§ã¯ãªãã®ã§ãåãäžå¿ã«æ£æ¹åœ¢ãå転ãããŸãããã
![](https://habrastorage.org/storage2/cc1/1c0/da8/cc11c0da880170e0ece758e8421dc0fa.png)
Processing.jsã®ã¢ãã¡ãŒã·ã§ã³
Processing.jsã¯ã次ã®ãããªsetupïŒïŒããã³drawïŒïŒé¢æ°ã䜿çšããã¢ãã¡ãŒã·ã§ã³ããµããŒãããŠããŸã ã
float angle = 0.0; void setup() { size(200, 200); frameRate(30); } void draw() { background(#ffffff); translate(100, 100); fill(#52b755); noStroke(); ellipse(0, 0, 20, 20); rotate(angle); angle += 0.1; noFill(); stroke(#52b755); strokeWeight(2); rect(-40, -40, 80, 80); }
ã»ããã¢ããé¢æ°ã¯ãã¢ããªã±ãŒã·ã§ã³ã®èµ·åæã«åŒã³åºãããŸãã Processing.jsã¯1ç§ããã30ãã¬ãŒã ã§ãããããdrawïŒïŒé¢æ°ã¯1ç§ããã30ååŒã³åºãããŸãã ãã®æ°å€ã¯é«ãããã«èŠãããããããŸããããã¹ã ãŒãºãªã¢ãã¡ãŒã·ã§ã³ãå¿ èŠãªå Žåã¯æ£åžžã§ãã
drawïŒïŒé¢æ°ã¯æåã«ãã£ã³ãã¹å šäœã1è²ã§å¡ãã€ã¶ããŸãã ããã«ãããåã®ãã¬ãŒã ã®æ®ããã¹ãŠããã€ã³ããããŸãã ããã¯ãProcessing.jsã®äž»ãªæ©èœã§ãããªããžã§ã¯ããæäœããªããããåã®ãã¬ãŒã ããæ®ã£ãŠãããã¹ãŠãã¯ãªã¢ããå¿ èŠããããŸãã
次ã«ããã©ãŒã«ã¹ããã€ã³ã100,100ã«ç§»åããŸãã ããã«ããã座æšãå€æŽãããŸã§ããã¹ãŠã®æç»æäœã§ããã£ã³ãã¹ã®å·Šãã100ãã¯ã»ã«ããã£ã³ãã¹ã®äžéšãã100ãã¯ã»ã«ã®äœçœ®ã«é 眮ãããŸãã 次ã«ãåŸæè§ã®ä»¥åã®å€ãå€æŽããŸãã ãã®å€ã¯ãã¬ãŒã ããšã«å¢å ããæ£æ¹åœ¢ãå転ããŸãã æåŸã®ã¹ãããã¯ã fillé¢æ°ãšrecté¢æ°ã䜿çšããŠæ£æ¹åœ¢ã衚瀺ããããšã§ãã
éåžžãrotateïŒïŒProcessing.jsé¢æ°ã¯ã 床ã§ã¯ãªãã©ãžã¢ã³ã§åäœããŸãã ãããã£ãŠãè§åºŠã®å€ã0.2ãã€å¢å ããã3ãªã©ã®å€§ããªå€ã§ã¯ãããŸãããããã¯ãäžè§æ³ãå¿ èŠãªå Žåã®ãœãããŠã§ã¢æç»ã®å€ãã®ã±ãŒã¹ã®1ã€ã§ãã
ã¢ãã¡ãŒã·ã§ã³Paper.js
Paper.jsã§ã¯ãåçŽãªã¢ãã¡ãŒã·ã§ã³ã¯ãå®æ°ã®é·æ¹åœ¢ãªããžã§ã¯ãã䜿çšããProcessing.jsãããç°¡åã«å®è£ ã§ããŸãã
var r; function init() { var c = new Path.Circle(new Point(100, 100), 10); c.fillColor = '#ee2a33'; var point = new Point(60, 60); var size = new Size(80, 80); var rectangle = new Rectangle(point, size); r = new Path.Rectangle(rectangle); r.strokeColor = '#ee2a33'; r.strokeWidth = 2; } function onFrame(event) { r.rotate(3); } init();
æ£æ¹åœ¢ã®ç¶æ ããªããžã§ã¯ããšããŠäœ¿çšããPaper.jsãç»é¢äžã®æç»ãå¶åŸ¡ããŸãã åãã¬ãŒã ã§ãå°ãå転ãããŸãã Paper.jsã¯ãã¹ãŠã®å€æã管çãããããåãã¬ãŒã ã®éå§æã«ãã¹ãŠãæåã§åæç»ããããå転è§åºŠã®çŸåšã®å€ã远跡ããããä»ã®ãªããžã§ã¯ãã«è§Šããªãããšãå¿é ãããããå¿ èŠã¯ãããŸããã
ã©ãã¡ãšã«ã¢ãã¡ãŒã·ã§ã³
Raphaëlã¢ãã¡ãŒã·ã§ã³ã¯ãæšæºã®JavaScriptãã€ãŸã ã©ãã¡ãšã«ã¯ã人äºç®¡çã®ããã®ç¹å¥ãªæ©èœãå®çŸ©ããŠããŸããã 代ããã«ãéåžžã®setIntervalïŒïŒé¢æ°ã䜿çšããŸãã
var paper = Raphael('raphaelAnimation', 200, 200); var c = paper.ellipse(100, 100, 10, 10); c.attr({ 'fill': '#00aeef', 'stroke': '#00aeef' }); var r = paper.rect(60, 60, 80, 80); r.attr({ 'stroke-width': 2, 'stroke': '#00aeef' }); setInterval(function() { r.rotate(6); }, 33);
Raphaëlã¯ããªããžã§ã¯ãæåã®ã¢ãããŒãã«ãããŠPaper.jsã«äŒŒãŠããŸãã æ£æ¹åœ¢ãããããã®rotateïŒïŒã¡ãœãããåŒã³åºããŸãã ãã®ããã«ããŠããããæ°è¡ã®ã³ãŒãã䜿çšããŠæ£æ¹åœ¢ãå転ãããããšãã§ããŸãã
çžäºäœçš
ã©ãã¡ãšã«ã¯ãå³é¢ã«ã€ã³ã¿ã©ã¯ãã£ãæ©èœãè¿œå ããå¿ èŠãããå Žåã«ãã®å©ç¹ãæããã«ããŸãã JavaScriptã®éåžžã®ã€ãã³ãã¢ãã«ãšåæ§ã®ã€ãã³ãã¢ãã«ãæäŸããããŠã¹ã¯ãªãã¯ããã©ãã°ã¢ã³ãããããã®éå§ããŸãã¯ãŠãŒã¶ãŒã¿ããã®æ€åºã容æã«ããŸãã ããŠã¹ã¯ãªãã¯ã«å¯Ÿãã2ä¹å¿çãè¿œå ããŸãããã
![](https://habrastorage.org/storage2/3cb/d57/739/3cbd577396e12e47df059cb81fd8f0dc.png)
ã©ãã¡ãšã«ã§ã®äº€æµ
var paper = Raphael('raphaelInteraction', 200, 200); var r = paper.rect(60, 60, 80, 80); r.attr({'fill': '#00aeef', 'stroke': '#00aeef'}); var clicked = false; r.click(function() { if (clicked) { r.attr({'fill': '#00aeef', 'stroke': '#00aeef'}); } else { r.attr({'fill': '#f00ff0', 'stroke': '#f00ff0'}); } clicked = !clicked; });
Raphaëlã®clickïŒïŒé¢æ°ã¯jQueryã®ããã«æ©èœããä»»æã®ãªããžã§ã¯ãã«æããããšãã§ããŸãã ã¯ãªãã¯ã€ãã³ããåãåã£ãåŸãæ£æ¹åœ¢ã®è²ãå€æŽããŠãåé¡ã¯ãããŸããã Raphaëlã«ã¯ããã©ãã°ã¢ã³ãããããããªããžã§ã¯ããžã®ã«ãŒãœã«ãããã³JavaScriptã§å©çšå¯èœãªä»ã®ãã¹ãŠã®ã€ãã³ãããµããŒãããè¿œå æ©èœããããŸãã
Paper.jsã§ã®çžäºäœçš
Paper.jsã¯ã€ã³ã¿ã©ã¯ã·ã§ã³ã¿ã¹ã¯ãæäŸããããã«å¥ã®æ¹æ³ã䜿çšããŸãããéåžžã«ç°¡åã§ãïŒ
var hitOptions = { fill: true, tolerance: 5 }; function init() { var point = new Point(60, 60); var size = new Size(80, 80); var rectangle = new Rectangle(point, size); r = new Path.Rectangle(rectangle); r.fillColor = '#ee2a33'; } function onMouseUp(event) { var hitResult = project.hitTest(event.point, hitOptions); if (hitResult && hitResult.item) { if (hitResult.item.clicked) { hitResult.item.fillColor = '#ee2a33'; } else { hitResult.item.fillColor = '#f00ff0'; } hitResult.item.clicked = !hitResult.item.clicked; } } init();
Paper.jsã¯ãã ããããã¹ã ããšåŒã°ããæŠå¿µã䜿çšããŠã«ãŒãœã«ãæäœããŸããã¯ãªãã¯ãã€ã³ãã¯ã«ãŒãœã«ã®çŸåšã®åº§æšã«åºã¥ããŠèšç®ãããã©ã€ãã©ãªã¯ããã«ãããªããžã§ã¯ããåãåããŸãã èšå®ã䜿çšãããšãããã°ã©ã ã®åäœãæ§æã§ããŸãããªããžã§ã¯ãã®ã¯ãªãã¯ãã«ãŠã³ãããããã«ã«ãŒãœã«ãã©ãã ãè¿ã¥ãããããªããžã§ã¯ããå éšç©ºéå šäœããšããžã ãããªã©ãæå®ã§ããŸãã ãã®ã¯ãªãã¯æ€åºã¯ãPaper.jsã®ä»»æã®ãªããžã§ã¯ãïŒãŸãã¯ãªããžã§ã¯ãã®ã°ã«ãŒãïŒã«é©çšã§ããŸãã
Paper.jsããŒã ã¯ãã»ãã®æ°é±éåïŒ2012幎2æçŸåšïŒã®Raphaëlã«äŒŒããªããžã§ã¯ãã¢ãããŒããè¿œå ããŸããã ã€ãã³ãã¯æ¬¡ã®ããŒãžã§ã³ã§è¡šç€ºãããã¯ãã§ãã
Processing.jsã§ã®çžäºäœçš
Processing.jsã«ã¯ããããããã«ããããŠã¹ã¯ãªãã¯ã®æ€åºæ©èœããããŸãã ãªããžã§ã¯ãã¹ã¿ã€ã«ã¯ãµããŒããããŠããªããããäž»ã«ç¬èªã®é·æã«äŸåããå¿ èŠããããŸãã
float bx; float by; int bs = 20; boolean bover = false; boolean clicked = false; void setup() { size(200, 200); bx = width/2.0; by = height/2.0; noStroke(); fill(#52b755); frameRate(10); } void draw() { background(#ffffff); // Test if the cursor is over the box if (mouseX > bx-bs && mouseX < bx+bs && mouseY > by-bs && mouseY < by+bs) { bover = true; } else { bover = false; } translate(100, 100); rect(-40, -40, 80, 80); } void mousePressed() { if (bover) { if (clicked) { fill(#52b755); } else { fill(#f00ff0); } clicked = !clicked; } }
Processing.jsã¯æ£æ¹åœ¢ãæããšããã«ãããå¿ããŸãã æ£æ¹åœ¢ãã¯ãªãã¯ãããšãã«è²ãå€æŽãããã®ã§ãããã¹ã¯ãªããã¯ãããèªèããªãããããã¹ãŠã®èšç®ãèªåã§è¡ãå¿ èŠããããŸãã drawïŒïŒé¢æ°ã¯ãã«ãŒãœã«ã®äœçœ®ã決å®ãããããæ£æ¹åœ¢å ã«ãããã©ãããèšç®ããŸãã
1ã€ã®æ£æ¹åœ¢ã®å Žåãã³ãŒãã¯ããã»ã©æããããŸããããããšãã°åã®å Žåãæ¯åPr 2ãæ°ããå¿ èŠããããŸãã ãŸããæ¥åãæ²ç·ãè€éãªåœ¢ç¶ãªã©ã®ããè€éãªåœ¢ç¶ã§ã¯ãããã«èšç®ãå¿ èŠã«ãªããŸãã
æ確ãªåè ã¯ããªã
åãã¬ãŒã ã¯ãŒã¯ã«ã¯ç¬èªã®å©ç¹ããããŸãã åã©ã€ãã©ãªã¯ãã¯ãŒã«ãªãã¢ãããã«ã¯ãŒã«ãªã¢ããªã±ãŒã·ã§ã³ãäœæããæ©äŒãæäŸããŸãã
Paper.jsã®å©ç¹
Paper.jsã¯ãè€éãªåœ¢ç¶ã®æäœã«æé©ã§ãã äœçŸãã®ç°ãªãæ¹æ³ã§ãããããªããžã§ã¯ããå転ãããããå€æããããšãã§ããŸãã ããã«ãããããŠã¹ã§ã®ãžã§ã¹ãã£ãŒïŒãžã§ã¹ãã£ãŒïŒã䜿çšããŠãªããžã§ã¯ããå€æŽã§ããŸãã æ°ããGoogle Music Tourã§ã¯ãè²ã®ä»ããç·ãé³æ¥œã«ç§»åãããã®ã©ã€ãã©ãªãåçŽãªåœ¢ç¶ã®è€éãªå€åãã©ã®ããã«åŠçãããã瀺ããŸãã
![](http://habrastorage.org/storage2/d38/b4f/1a2/d38b4f1a29a046327c14b475a3295137.png)
Paper.jsã®ãã1ã€ã®ãããèŠå ã¯ã ããããããã°ã©ãã£ãã¯ã¹ã®ãµããŒãã§ãã Paper.jsã¯ãã€ã¡ãŒãžã®è¡šç€ºæ¹æ³ãå®å šã«å€æŽã§ããŸããããšãã°ãã€ã¡ãŒãžãã¹ãã€ã©ã«ãŸãã¯ãã¥ãŒããã¯ãã£ã³ãã¹ïŒQ * bertããŒãïŒã«å€ããããšãã§ããŸãã
Processing.jsã®å©ç¹
Processing.jsã®äž»ãªå©ç¹ã¯ãã®é床ã§ããããã«ãããé ããã·ã³ã§ãè€éãªã¢ãã¡ãŒã·ã§ã³ãäœæã§ããŸãã ããã«ã¯å€ãã®äŸããããŸãããŸãã RicardoSánchezã® Webãµã€ãã§ã¯ãProcessing.jsã§ã®ã¹ã ãŒãºãªã¢ãã¡ãŒã·ã§ã³ã®çŽ æŽãããäŸã䜿çšãããŠããŸãã
![](http://habrastorage.org/storage2/9e3/c36/85a/9e3c3685a4fc4e92f0f347a1e4c71080.png)
æ°Žãåãè£ãå°Ÿãšéã®æµ®éäœã¯éåžžã«èªç¶ã«èŠããŸãã Processing.jsã§ã¯ãæ²ç·ãšã«ã¹ã¿ãã€ãºå¯èœãªã¢ãã¡ãŒã·ã§ã³ã䜿çšããã ãã§ãããå®çŸã§ããŸãã
Processing.jsã¯ãã·ã§ãŒãã£ã³ã°ãã©ã€ãã£ã³ã°ã3Då€æãªã©ã®èŠçŽ ã«å¯Ÿããè€éãªå¹æããµããŒãããŠããŸãã ãã£ã³ãã¹äžã«è€éãªã¢ãã¡ãŒã·ã§ã³ããã°ããäœæããå Žåã¯ãProcessing.jsãæé©ã§ãã
ã©ãã¡ãšã«ã®å©ç¹
Raphaëlã®æé«ã®æ©èœã®1ã€ã¯ãInternet Explorer 7ããã³8ã®ãµããŒãã§ããã¢ããªã±ãŒã·ã§ã³ãå€ããã©ãŠã¶ãŒããµããŒãããå¿ èŠãããå ŽåãRaphaëlãå¯äžã®éžæè¢ã§ãã
ã©ãã¡ãšã«ã®ãã1ã€ã®éèŠãªå©ç¹ã¯ãã³ãã¥ããã£ã§ãã Raphaëlã¯Paper.jsããã³Processing.jsãããå€ããããå žåçãªåé¡ã®äŸããã¥ãŒããªã¢ã«ã説æãããã³ãããã®è§£æ±ºæ¹æ³ã®ã®ã£ã©ãªãŒãäœæããæéããããŸããã ããã«ã¯ãã€ã³ã¿ã©ã¯ãã£ããªäŸã§èŠãã€ãŒãžã³ã° ã å€æã¢ãã¡ãŒã·ã§ã³ãã€ãã³ããã³ãã©ãŒã®ãµããŒããçµã¿èŸŒãŸããŠããŸãã 圌ã¯èªåã®ãã£ãŒãäœæã©ã€ãã©ãªãæã£ãŠããŸãã
![](http://habrastorage.org/storage2/7ec/1b9/78a/7ec1b978a0a129e332b9115f5ff601da.png)
Raphaëlã«ã¯ããŸããŸãªããŒã«ããããŸãã
ããŒã«
Flashã䜿çšããŠããå Žåããããã®ã©ã€ãã©ãªçšã®ããŒã«ãäžè¶³ããŠãããšå°ããŸãã å€ãã®ãã¬ãŒã ã¯ãŒã¯ã§ã¯SVGç»åãç·šéã§ããŸãããã¢ããªã±ãŒã·ã§ã³ãäœæããããã®ãã©ãã°ã¢ã³ãããããæ¹æ³ãæäŸãããã®ã¯ãããŸããã
ããã«ããã€ãã®ç°¡åãªããŒã«ããããŸããããããã¯ã¹ã¿ã³ãã¢ãã³ã®ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãªãããã®ãããªããã°ã©ã ãäœæããå¯èœæ§ã®èšŒæ ãšããŠèããããšãã§ããŸãã Adobeã¯EdgeãšåŒã°ããããã°ã©ã ã«åãçµãã§ããŸãããéåžžã®ããŒã«ã«ãªãããã«ã¯ãŸã å€ãã®äœæ¥ãå¿ èŠã§ãã
ãã©ãã°ã¢ã³ããããããå¿ èŠãªå Žåã¯ãWebã¢ãã¡ãŒã·ã§ã³ã¯ãŸã 䜿çšã§ããŸããã çŸæç¹ã§ã¯ããã®é åã§ã¢ãã¡ãŒã·ã§ã³ãäœæããããšã¯ããããªã²ãŒã ã®ããã°ã©ãã³ã°ã«äŒŒãŠããŸãã åã衚瀺ããã³ãŒããèšè¿°ããããšã¯ããã¬ããããå³åœ¢ãã¯ãªãã¯ããŠãã©ãã°ããããšãããé£ãããããè€éãªã¢ããªã±ãŒã·ã§ã³ãäœæããå Žåã«å€ãã®å©ç¹ããããŸãã
ãã£ãšè€éãªãã®ãäœæããŸããã
ããã§ãããã€ãã®ç°¡åãªäŸãèŠãŠãåãã©ãããã©ãŒã ã®é·æãšçæãç¥ããã©ã¡ãã®å Žåãæé©ããèªèããŸããã åã©ã€ãã©ãªã«ã¯é·æãšçæããããŸãããããã§ãåºæ¬çãªäŸã«ã®ã¿åºã¥ããŠãããããããããå€æããããšã¯éåžžã«å°é£ã§ãã
åã©ã€ãã©ãªãæ¯èŒããããã«ãããã€ãã®æ¯è»ãæãããŸããã ããããã2ã€ã®åã§æ§æãããå€åŽã®åã®åšãã«æ¯ã®ã»ããããããŸãã
![](http://habrastorage.org/storage2/ec6/fec/853/ec6fec853af9ffce9f47c9e445b9b4c3.png)
ãã¹ãŠã®è¡šé¢ãåãè²ã§å¡ãã€ã¶ããããšãå³ã¯æ¯è»ã®ããã«èŠããŸãã
![](http://habrastorage.org/storage2/a4f/9d7/cbd/a4f9d7cbd6ecaa9024bf1a7b924522cf.png)
ã®ã¢ã¯ãã¢ãã¡ãŒã·ã§ã³ã®åãã¬ãŒã ã§å°ãå転ããŸãã ã¡ã€ã³ã®ã¢ãé床ãèšå®ããä»ã®ãã¹ãŠã®ã®ã¢ã¯ããã«å¿ããŠå転ããŸãã ã®ã¢ã¯ãç°åžžãªéã®äžè§æ³ã«åºã¥ããŠãé 眮ãããçµåãããäºãã«å転ããŸãã ãããã1ã€ã®ãã£ã³ãã¹ã«é 眮ãããšãè€éãªã®ã¢ã·ã¹ãã ãåŸãããŸãã
Paper.jsïŒ
![](http://habrastorage.org/storage2/13c/0f9/87e/13c0f987ef944f0d23d13ecac1ab093f.png)
Processing.jsïŒ
![](http://habrastorage.org/storage2/d21/640/6b0/d216406b08542403f881e43718a775c6.png)
ã©ãã¡ãšã«ïŒ
![](http://habrastorage.org/storage2/4d3/a73/e4f/4d3a73e4fd50c62516cea9cf8d22d3e2.png)
ãŸããããã¯ã©ãã¡ãšã«ã§ã¯ãããŸããã§ããã Paper.jsãProcessing.jsã®ããã«ãRaphaëlã§ã¯å転é¢æ°ã¯æ©èœããŸããã ã©ãã¡ãšã«ã¯ãåºå®ç¹ãäžå¿ãšããå転ããµããŒãããŠããŸããã 代ããã«ãã®ã¢ã®æ¯ã¯æ¯ååæç»ãããäžå¿ã®åšããå転ããã®ã§ã¯ãªãã空äžãé£ã³åããŸãã èè ããããè¡ãããšãã§ãããšæ³åã§ããå¯äžã®æ¹æ³ã¯ãã®ã¢ãå®å šã«æãããããå転ãããããšã§ããã圌ãæã¡ãããšæããããå€ãã®æ°åŠããããŸãã 誰ãããããèªåã§å®è£ ãããå Žåã¯ããããããããã¯ãªãŒãã³ãœãŒã¹ã§ãã
Webã§ã®æç»ã®æªæ¥
ç§ãã¡ã¯ããããã®æ°ãããã¹ã¿ãªã³ã°ãããæè¡ã§éãã§ããŸãïŒãããç§ãã¡ã®åé¡ã®å€ãã解決ããããããã®ç 究ãžã®æè³ãååããããšãé¡ã£ãŠããŸãã ãã¯ãããžãŒã®äººæ°ã¯é«ãŸã£ãŠããŸãããã¡ãŒã«ãŒã®ãµããŒããããžãã¹èŠä»¶ãªã©ãå€ãã®èŠå ãé¢ä¿ããŠããŸãã ç§ãã¡ã®æ¥çã®æªæ¥ã¯ãã°ãã°æšæž¬ã®ã²ãŒã ã§ãã
ä»æ¥ãFlashã¯åŠã¶ã®ã«æé©ãªãã¯ãããžãŒãšã¯æããŸããã Flashã«ã¯åªããéçºããŒã«ãé·å¹Žã®éçºçµéšã倧ããªã³ãã¥ããã£ããããŸãããAdobeã§ããFlashããé¢ããŠããŸãã
SVGã§ãåæ§ã®ç¶æ³ã§ãã ãã©ãŠã¶ã¯ããããµããŒãããŸãããããŸã泚æãæããŸããã
åãã©ãŠã¶ã¡ãŒã«ãŒã¯ãããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ã䜿çšããŠPaper.jsãProcessing.jsãªã©ã®ã©ã€ãã©ãªãããé©åã«ãµããŒãããæ©äŒãåŸãããã«ãã¬ã³ããªã³ã°ãã£ã³ãã¹ã®é床ãåäžãããããã«çµ¶ããåãçµãã§ããŸãã Aã¯ã©ã¹ã®ã¢ãã€ã«ãã©ãŠã¶ã¯ãã¹ãŠcanvasããµããŒãããŠãããéçºè ã¯ãã®ãµããŒãã®å質ãæ¹åããããã«çµ¶ããåãçµãã§ããŸãã
æŽæ°ããŸããã
ãµã ã»ããããªãŒã»ãã©ããã¹ããŒã¯ãå ã®èšäºã«å¯Ÿããã³ã¡ã³ãã®äžã§ãèè ã®æ¬¡ã®äž»åŒµã«ç°è°ãå±ããŸããã
ã©ãã¡ãšã«ã¯ãåºå®ç¹ãäžå¿ãšããå転ããµããŒãããŠããŸããã -ãµããŒã
ã©ãã¡ãšã«ã¯äººäºç®¡çã®ããã®ç¹å¥ãªæ©èœãå®çŸ©ããŠããŸãã --å®çŸ©ããŸã
圌ã¯ãŸããRaphaëlãIE 6ã§ãåäœããããšãä¿èšŒããŸããã