OSDN Git Service

opposite windings を利用する
[flapp/flapp.git] / src / shape.js
index 293d8cc..fd4a368 100644 (file)
@@ -93,6 +93,7 @@ FlappShape.prototype = {
            }
            rca.push("ctx.translate("+minX*factor+","+minY*factor+");");
            var edgesUsed = new Uint8Array(edgeInfoList.length); // 0 initialized
+           var pathStarted = false;
            for (var i1 = 0, l1 = edgeInfoList.length ; i1 < l1 ; i1++) {
                var edgeInfo = edgeInfoList[i1];
                var edges = edgeInfo.edges;
@@ -105,7 +106,13 @@ FlappShape.prototype = {
                }
                var currIndex = i1;
                console.log(edgeInfo);
-                rca.push("ctx.beginPath("+(edges[0]-minX)*factor+","+(edges[1]-minY)*factor+");");
+               // ref) http://d.hatena.ne.jp/yoya/20120313/canvas
+               if (pathStarted) {
+                    rca.push("ctx.moveTo("+(edges[0]-minX)*factor+","+(edges[1]-minY)*factor+");");
+               } else {
+                   rca.push("ctx.beginPath("+(edges[0]-minX)*factor+","+(edges[1]-minY)*factor+");");
+                   pathStarted = true;
+               }
                do {
                    if (edgesUsed[currIndex]) {
                        console.error("duplicate link edge");
@@ -126,7 +133,6 @@ FlappShape.prototype = {
                        break; // self loop
                    }
                } while ((currIndex = edgeInfo.next) !== null);
-                rca.push("ctx.closePath();");
            }
            rca.push("ctx.fill();");
            if (factor !== 1) {