diff --git a/spine-as3/spine-as3-example/lib/spine-as3.swc b/spine-as3/spine-as3-example/lib/spine-as3.swc index 940c09717..69f60f5b9 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/attachments/RegionAttachment.as b/spine-as3/spine-as3/src/spine/attachments/RegionAttachment.as index 4d81b265e..51b023b73 100644 --- a/spine-as3/spine-as3/src/spine/attachments/RegionAttachment.as +++ b/spine-as3/spine-as3/src/spine/attachments/RegionAttachment.as @@ -69,29 +69,29 @@ package spine.attachments { public function updateOffset() : void { var regionScaleX : Number = width / regionOriginalWidth * scaleX; var regionScaleY : Number = height / regionOriginalHeight * scaleY; - var localX : Number = -width / 2 * scaleX + regionOffsetX * regionScaleX; - var localY : Number = -height / 2 * scaleY + regionOffsetY * regionScaleY; + var localX : Number = -width * 0.5 * scaleX + regionOffsetX * regionScaleX; + var localY : Number = -height * 0.5 * scaleY + regionOffsetY * regionScaleY; var localX2 : Number = localX + regionWidth * regionScaleX; var localY2 : Number = localY + regionHeight * regionScaleY; + var radians : Number = rotation * Math.PI / 180; - var cos : Number = Math.cos(radians); - var sin : Number = Math.sin(radians); - var localXCos : Number = localX * cos + x; - var localXSin : Number = localX * sin; - var localYCos : Number = localY * cos + y; - var localYSin : Number = localY * sin; - var localX2Cos : Number = localX2 * cos + x; - var localX2Sin : Number = localX2 * sin; - var localY2Cos : Number = localY2 * cos + y; - var localY2Sin : Number = localY2 * sin; - offset[BLX] = localXCos - localYSin; - offset[BLY] = localYCos + localXSin; - offset[ULX] = localXCos - localY2Sin; - offset[ULY] = localY2Cos + localXSin; - offset[URX] = localX2Cos - localY2Sin; - offset[URY] = localY2Cos + localX2Sin; - offset[BRX] = localX2Cos - localYSin; - offset[BRY] = localYCos + localX2Sin; + var ulDist : Number = Math.sqrt(localX * localX + localY * localY); + var ulAngle : Number = Math.atan2(localY, localX); + var urDist : Number = Math.sqrt(localX2 * localX2 + localY * localY); + var urAngle : Number = Math.atan2(localY, localX2); + var blDist : Number = Math.sqrt(localX * localX + localY2 * localY2); + var blAngle : Number = Math.atan2(localY2, localX); + var brDist : Number = Math.sqrt(localX2 * localX2 + localY2 * localY2); + var brAngle : Number = Math.atan2(localY2, localX2); + + offset[BLX] = Math.cos(radians - blAngle) * blDist + x; + offset[BLY] = Math.sin(radians - blAngle) * blDist + y; + offset[ULX] = Math.cos(radians - ulAngle) * ulDist + x; + offset[ULY] = Math.sin(radians - ulAngle) * ulDist + y; + offset[URX] = Math.cos(radians - urAngle) * urDist + x; + offset[URY] = Math.sin(radians - urAngle) * urDist + y; + offset[BRX] = Math.cos(radians - brAngle) * brDist + x; + offset[BRY] = Math.sin(radians - brAngle) * brDist + y; } public function setUVs(u : Number, v : Number, u2 : Number, v2 : Number, rotate : Boolean) : void { diff --git a/spine-starling/spine-starling-example/lib/spine-as3.swc b/spine-starling/spine-starling-example/lib/spine-as3.swc index 940c09717..0d384e96f 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 940c09717..0d384e96f 100644 Binary files a/spine-starling/spine-starling/lib/spine-as3.swc and b/spine-starling/spine-starling/lib/spine-as3.swc differ