[HTML] DrawPoly
Monkey Forums/Monkey Code/[HTML] DrawPoly
| ||
I've hacked mojo [HTML] to draw polys (filled or not) Not the best implementation Graphics.Monkey Add this method in class gxtkGraphics Method DrawPoly(coords:Float[],fill:int) in class GraphicsContent Function DrawPoly(coords:Float[],fill:Int=1) ValidateMatrix renderDevice.DrawPoly(coords,fill) End mojo.html5.js gxtkGraphics.prototype.DrawPoly=function( coords,fill ){ this.gc.beginPath(); this.gc.moveTo( coords[0],coords[1] ); var i; for( i=0;i<coords.length;i=i+2) { this.gc.lineTo( coords[i],coords[i+1] ); this.gc.stroke(); } this.gc.closePath(); if (fill==1){ this.gc.fill(); } } Stupid example (I've not added any control on the array size...) I dont' know if it's possible to create this as an external command (like the one in Diddy or MonkeyTools) as I'm not sure I can access to mojo class gxtkGraphics. |
| ||
If you really want to implement this as an external function, you can get the canvas graphics context fromvar gc = bb_graphics_context.bbdevice.gc; But don't really do that, because it's liable to break in the future. |
| ||
For a HTML-only solution, you can use Mark's DOM module to add other canvas functionality to Mojo. DrawPoly example: The DOM module code is public domain, so you can extract the minimum required classes and functions and create a sort of 'mini' DOM module to use in your own personal projects (that's what I do, anyway). However, it would be nice to have a 'sanctioned' Mojo-provided way to get the game canvas instance across platforms. |
| ||
Oke I found and edit a Illustrator script in order to export some x,y data to monkey DrawPoly() but for one reason I don't get the poly on screen. A simple poly like this works: [10.0, 10.0, 50.0, 10.0, 80.0, 50.0, 40.0, 100.0, 10.0, 10.0] But this don't [342.33,-257.42,342.68,-251.8,343.67,-244.09,342.68,-235.6,341.02,-228.36,337.33,-219.34,323.16,-216.88, 319.22,-224.69,293.87,-224.62,272.37,-219.69,235.36,-212.38,206.43,-206.31,184.9,-206,149.13,-206,92.26,-209.1,46.76,-216.69,5.33,-217.44,0,-257.67,342.33,-257.67,342.33,-257.42] Now i'm wondering if I understand the array format. it is like this [ x,y, ' start point x,y, ' next point x,y, ' next point x,y, ' end point (== the same as start point) ] The illustrator script I'm using is this: (its javascript code) var pathRefs=docRef.pathItems; var pathCount=pathRefs.length; var scaleFactor=1; for ( i = 0; i < pathCount; i++ ) { var currPath=pathRefs[i]; var pointRefs=currPath.pathPoints; var pointCount=pointRefs.length; var firstAnchor=currPath.pathPoints[0].anchor; var tmp1=Math.round((firstAnchor[0]/scaleFactor)*100)/100; var tmp2=Math.round((firstAnchor[1]/scaleFactor)*100)/100; var firstAnchorVal=tmp1+","+tmp2+ ","; textRef.contents+=firstAnchorVal; for(p=1;p<pointCount;p++){ var currAnchor=currPath.pathPoints[p].anchor; var tmp1=Math.round((currAnchor[0]/scaleFactor)*100)/100; var tmp2=Math.round((currAnchor[1]/scaleFactor)*100)/100; var currAnchorVal=tmp1+","+tmp2+","; textRef.contents+=currAnchorVal; } var tmp1=Math.round((firstAnchor[0]/scaleFactor)*100)/100; var tmp2=Math.round((firstAnchor[1]/scaleFactor)*100)/100; var lastAnchorVal=tmp1+","+tmp2+","; textRef.contents+=lastAnchorVal; } mmm I see the problem, I have this in illustrator [257.0,-398, 146.0,398.0, 146.0, -302.0,257.0,-302.0] but monkey uses this [257.0,398.0, 146.0,398.0, 146.0, 302.0,257.0,302.0] I don't know why yet |