diff --git a/spine-as3/spine-as3-example/lib/spine-as3.swc b/spine-as3/spine-as3-example/lib/spine-as3.swc index 627fc635a..235a06912 100644 Binary files a/spine-as3/spine-as3-example/lib/spine-as3.swc and b/spine-as3/spine-as3-example/lib/spine-as3.swc differ diff --git a/spine-as3/spine-as3/src/spine/SkeletonClipping.as b/spine-as3/spine-as3/src/spine/SkeletonClipping.as index 89604cd2b..9d62cc8a7 100644 --- a/spine-as3/spine-as3/src/spine/SkeletonClipping.as +++ b/spine-as3/spine-as3/src/spine/SkeletonClipping.as @@ -212,7 +212,7 @@ package spine { var clippingVertices : Vector. = clippingArea; var clippingVerticesLast : int = clippingArea.length - 4; - var c0 : Number, c2 : Number, ua : Number; + var c0 : Number, c2 : Number, s : Number, ua : Number; var i : int, n : int; for (i = 0;; i += 2) { var edgeX : Number = clippingVertices[i], edgeY : Number = clippingVertices[i + 1]; @@ -233,14 +233,26 @@ package spine { } // v1 inside, v2 outside c0 = inputY2 - inputY; c2 = inputX2 - inputX; - ua = (c2 * (edgeY - inputY) - c0 * (edgeX - inputX)) / (c0 * (edgeX2 - edgeX) - c2 * (edgeY2 - edgeY)); - output.push(edgeX + (edgeX2 - edgeX) * ua); - output.push(edgeY + (edgeY2 - edgeY) * ua); + s = c0 * (edgeX2 - edgeX) - c2 * (edgeY2 - edgeY); + if (Math.abs(s) > 0.000001) { + ua = (c2 * (edgeY - inputY) - c0 * (edgeX - inputX)) / s; + output.push(edgeX + (edgeX2 - edgeX) * ua); + output.push(edgeY + (edgeY2 - edgeY) * ua); + } else { + output.push(edgeX); + output.push(edgeY); + } } else if (side2) { // v1 outside, v2 inside c0 = inputY2 - inputY, c2 = inputX2 - inputX; - ua = (c2 * (edgeY - inputY) - c0 * (edgeX - inputX)) / (c0 * (edgeX2 - edgeX) - c2 * (edgeY2 - edgeY)); - output.push(edgeX + (edgeX2 - edgeX) * ua); - output.push(edgeY + (edgeY2 - edgeY) * ua); + s = c0 * (edgeX2 - edgeX) - c2 * (edgeY2 - edgeY); + if (Math.abs(s) > 0.000001) { + ua = (c2 * (edgeY - inputY) - c0 * (edgeX - inputX)) / s; + output.push(edgeX + (edgeX2 - edgeX) * ua); + output.push(edgeY + (edgeY2 - edgeY) * ua); + } else { + output.push(edgeX); + output.push(edgeY); + } output.push(inputX2); output.push(inputY2); } diff --git a/spine-starling/spine-starling-example/lib/spine-as3.swc b/spine-starling/spine-starling-example/lib/spine-as3.swc index 627fc635a..235a06912 100644 Binary files a/spine-starling/spine-starling-example/lib/spine-as3.swc and b/spine-starling/spine-starling-example/lib/spine-as3.swc differ diff --git a/spine-starling/spine-starling/lib/spine-as3.swc b/spine-starling/spine-starling/lib/spine-as3.swc index 627fc635a..235a06912 100644 Binary files a/spine-starling/spine-starling/lib/spine-as3.swc and b/spine-starling/spine-starling/lib/spine-as3.swc differ