소스 검색

[as3] Ported flipX/flipY -> scaleX/scaleY change. See #1142.

badlogic 7 년 전
부모
커밋
fb67ada3d8

BIN
spine-as3/spine-as3-example/lib/spine-as3.swc


+ 18 - 38
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 rotationY : Number = 0, la : Number = 0, lb : Number = 0, lc : Number = 0, ld : Number = 0;
 			var sin : Number = 0, cos : Number = 0;
 			var sin : Number = 0, cos : Number = 0;
 			var s : Number = 0;
 			var s : Number = 0;
+			var sx : Number = _skeleton.scaleX;
+			var sy : Number = _skeleton.scaleY * (yDown ? -1 : 1);
 
 
 			var parent : Bone = _parent;
 			var parent : Bone = _parent;
 			if (!parent) { // Root bone.
 			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;
 				return;
 			}
 			}
 
 
@@ -174,8 +162,8 @@ package spine {
 				case TransformMode.noScaleOrReflection: {
 				case TransformMode.noScaleOrReflection: {
 					cos = MathUtils.cosDeg(rotation);
 					cos = MathUtils.cosDeg(rotation);
 					sin = MathUtils.sinDeg(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);
 					s = Math.sqrt(za * za + zc * zc);
 					if (s > 0.00001) s = 1 / s;
 					if (s > 0.00001) s = 1 / s;
 					za *= s;
 					za *= s;
@@ -187,26 +175,18 @@ package spine {
 					la = MathUtils.cosDeg(shearX) * scaleX;
 					la = MathUtils.cosDeg(shearX) * scaleX;
 					lb = MathUtils.cosDeg(90 + shearY) * scaleY;
 					lb = MathUtils.cosDeg(90 + shearY) * scaleY;
 					lc = MathUtils.sinDeg(shearX) * scaleX;
 					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.a = za * la + zb * lc;
 					this.b = za * lb + zb * ld;
 					this.b = za * lb + zb * ld;
 					this.c = zc * la + zd * lc;
 					this.c = zc * la + zd * lc;
 					this.d = zc * lb + zd * ld;					
 					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 {
 		public function setToSetupPose() : void {

+ 1 - 1
spine-as3/spine-as3/src/spine/Skeleton.as

@@ -50,7 +50,7 @@ package spine {
 		private var _skin : Skin;
 		private var _skin : Skin;
 		public var color : Color = new Color(1, 1, 1, 1);
 		public var color : Color = new Color(1, 1, 1, 1);
 		public var time : Number = 0;
 		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 var x : Number = 0, y : Number = 0;
 
 
 		public function Skeleton(data : SkeletonData) {
 		public function Skeleton(data : SkeletonData) {

+ 5 - 5
spine-as3/spine-as3/src/spine/flash/SkeletonSprite.as

@@ -146,14 +146,14 @@ package spine.flash {
 				wrapper.transform.colorTransform = colorTransform;
 				wrapper.transform.colorTransform = colorTransform;
 
 
 				var bone : Bone = slot.bone;
 				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.x = bone.worldX;
 				wrapper.y = bone.worldY;
 				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);
 				addChild(wrapper);
 			}
 			}
 		}
 		}

BIN
spine-starling/spine-starling-example/lib/spine-as3.swc


BIN
spine-starling/spine-starling/lib/spine-as3.swc