diff --git a/spine-as3/spine-as3-example/lib/spine-as3.swc b/spine-as3/spine-as3-example/lib/spine-as3.swc index 3c1b185b6..69a9f5236 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/Bone.as b/spine-as3/spine-as3/src/spine/Bone.as index a432cca4e..c6fa0da6f 100644 --- a/spine-as3/spine-as3/src/spine/Bone.as +++ b/spine-as3/spine-as3/src/spine/Bone.as @@ -92,31 +92,19 @@ package spine { var rotationY : Number = 0, la : Number = 0, lb : Number = 0, lc : Number = 0, ld : Number = 0; var sin : Number = 0, cos : Number = 0; var s : Number = 0; + var sx : Number = _skeleton.scaleX; + var sy : Number = _skeleton.scaleY * (yDown ? -1 : 1); var parent : Bone = _parent; if (!parent) { // Root bone. - rotationY = rotation + 90 + shearY; - la = MathUtils.cosDeg(rotation + shearX) * scaleX; - lb = MathUtils.cosDeg(rotationY) * scaleY; - lc = MathUtils.sinDeg(rotation + shearX) * scaleX; - ld = MathUtils.sinDeg(rotationY) * scaleY; - var skeleton : Skeleton = _skeleton; - if (skeleton.flipX) { - x = -x; - la = -la; - lb = -lb; - } - if (skeleton.flipY != yDown) { - y = -y; - lc = -lc; - ld = -ld; - } - this.a = la; - this.b = lb; - this.c = lc; - this.d = ld; - worldX = x + skeleton.x; - worldY = y + skeleton.y; + rotationY = rotation + 90 + shearY; + var skeleton : Skeleton = _skeleton; + this.a = MathUtils.cosDeg(rotation + shearX) * scaleX * sx; + this.b = MathUtils.cosDeg(rotationY) * scaleY * sy; + this.c = MathUtils.sinDeg(rotation + shearX) * scaleX * sx; + this.d = MathUtils.sinDeg(rotationY) * scaleY * sy; + worldX = x * sx + skeleton.x; + worldY = y * sy + skeleton.y; return; } @@ -174,8 +162,8 @@ package spine { case TransformMode.noScaleOrReflection: { cos = MathUtils.cosDeg(rotation); sin = MathUtils.sinDeg(rotation); - var za : Number = pa * cos + pb * sin; - var zc : Number = pc * cos + pd * sin; + var za : Number = (pa * cos + pb * sin) / sx; + var zc : Number = (pc * cos + pd * sin) / sy; s = Math.sqrt(za * za + zc * zc); if (s > 0.00001) s = 1 / s; za *= s; @@ -187,26 +175,18 @@ package spine { la = MathUtils.cosDeg(shearX) * scaleX; lb = MathUtils.cosDeg(90 + shearY) * scaleY; lc = MathUtils.sinDeg(shearX) * scaleX; - ld = MathUtils.sinDeg(90 + shearY) * scaleY; - if (this.data.transformMode != TransformMode.noScaleOrReflection ? pa * pd - pb * pc < 0 : this.skeleton.flipX != this.skeleton.flipY) { - zb = -zb; - zd = -zd; - } + ld = MathUtils.sinDeg(90 + shearY) * scaleY; this.a = za * la + zb * lc; this.b = za * lb + zb * ld; this.c = zc * la + zd * lc; this.d = zc * lb + zd * ld; - return; + break; } } - if (_skeleton.flipX) { - this.a = -this.a; - this.b = -this.b; - } - if (_skeleton.flipY != yDown) { - this.c = -this.c; - this.d = -this.d; - } + this.a *= sx; + this.b *= sx; + this.c *= sy; + this.d *= sy; } public function setToSetupPose() : void { diff --git a/spine-as3/spine-as3/src/spine/Skeleton.as b/spine-as3/spine-as3/src/spine/Skeleton.as index 82310fe9c..b66f6e9ca 100644 --- a/spine-as3/spine-as3/src/spine/Skeleton.as +++ b/spine-as3/spine-as3/src/spine/Skeleton.as @@ -50,7 +50,7 @@ package spine { private var _skin : Skin; public var color : Color = new Color(1, 1, 1, 1); public var time : Number = 0; - public var flipX : Boolean, flipY : Boolean; + public var scaleX : Number = 1, scaleY : Number = 1; public var x : Number = 0, y : Number = 0; public function Skeleton(data : SkeletonData) { diff --git a/spine-as3/spine-as3/src/spine/flash/SkeletonSprite.as b/spine-as3/spine-as3/src/spine/flash/SkeletonSprite.as index 9039d653d..1c7a900c8 100644 --- a/spine-as3/spine-as3/src/spine/flash/SkeletonSprite.as +++ b/spine-as3/spine-as3/src/spine/flash/SkeletonSprite.as @@ -146,14 +146,14 @@ package spine.flash { wrapper.transform.colorTransform = colorTransform; var bone : Bone = slot.bone; - var flipX : int = skeleton.flipX ? -1 : 1; - var flipY : int = skeleton.flipY ? -1 : 1; + var scaleX : Number = skeleton.scaleX; + var scaleY : Number = skeleton.scaleY; wrapper.x = bone.worldX; wrapper.y = bone.worldY; - wrapper.rotation = bone.worldRotationX * flipX * flipY; - wrapper.scaleX = bone.worldScaleX * flipX; - wrapper.scaleY = bone.worldScaleY * flipY; + wrapper.rotation = bone.worldRotationX * scaleX * scaleX; + wrapper.scaleX = bone.worldScaleX * scaleX; + wrapper.scaleY = bone.worldScaleY * scaleY; addChild(wrapper); } } diff --git a/spine-starling/spine-starling-example/lib/spine-as3.swc b/spine-starling/spine-starling-example/lib/spine-as3.swc index 3c1b185b6..e479cc0aa 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 3c1b185b6..e479cc0aa 100644 Binary files a/spine-starling/spine-starling/lib/spine-as3.swc and b/spine-starling/spine-starling/lib/spine-as3.swc differ