mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-02-06 07:14:55 +08:00
[as3] Ported flipX/flipY -> scaleX/scaleY change. See #1142.
This commit is contained in:
parent
486fa7eebf
commit
fb67ada3d8
Binary file not shown.
@ -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 {
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user