diff --git a/spine-as3/spine-as3/src/spine/BinaryInput.as b/spine-as3/spine-as3/src/spine/BinaryInput.as index 702c51814..1d5fefac7 100644 --- a/spine-as3/spine-as3/src/spine/BinaryInput.as +++ b/spine-as3/spine-as3/src/spine/BinaryInput.as @@ -30,7 +30,7 @@ package spine { import flash.utils.ByteArray; - class BinaryInput { + internal class BinaryInput { private var bytes : ByteArray; public var strings : Vector. = new Vector.(); diff --git a/spine-as3/spine-as3/src/spine/Color.as b/spine-as3/spine-as3/src/spine/Color.as index 65a88a8e1..ef54d60c7 100644 --- a/spine-as3/spine-as3/src/spine/Color.as +++ b/spine-as3/spine-as3/src/spine/Color.as @@ -64,6 +64,7 @@ package spine { } public function setFromString(hex : String) : Color { + if (hex.length != 8 && hex.length != 6) throw new ArgumentError("Hexadecimal color length must be 6 or 8: " + hex); hex = hex.charAt(0) == '#' ? hex.substr(1) : hex; this.r = parseInt(hex.substr(0, 2), 16) / 255.0; this.g = parseInt(hex.substr(2, 2), 16) / 255.0; @@ -108,5 +109,9 @@ package spine { g = ((value & 0x0000ff00) >>> 8) / 255; b = ((value & 0x000000ff)) / 255; } + + static public function fromString (hex : String) : Color { + return new Color(0, 0, 0, 0).setFromString(hex); + } } } diff --git a/spine-as3/spine-as3/src/spine/IkConstraint.as b/spine-as3/spine-as3/src/spine/IkConstraint.as index fbcd5ba10..0847b5eb7 100644 --- a/spine-as3/spine-as3/src/spine/IkConstraint.as +++ b/spine-as3/spine-as3/src/spine/IkConstraint.as @@ -126,9 +126,9 @@ package spine { } var b : Number = bone.data.length * sx, dd : Number = Math.sqrt(tx * tx + ty * ty); if ((compress && dd < b) || (stretch && dd > b) && b > 0.0001) { - var s : Number = (dd / b - 1) * alpha + 1; - sx *= s; - if (uniform) sy *= s; + var ss : Number = (dd / b - 1) * alpha + 1; + sx *= ss; + if (uniform) sy *= ss; } } bone.updateWorldTransformWith(bone.ax, bone.ay, bone.arotation + rotationIK * alpha, sx, sy, bone.ashearX, bone.ashearY); diff --git a/spine-as3/spine-as3/src/spine/Skeleton.as b/spine-as3/spine-as3/src/spine/Skeleton.as index e8e0165a5..1d4428a7b 100644 --- a/spine-as3/spine-as3/src/spine/Skeleton.as +++ b/spine-as3/spine-as3/src/spine/Skeleton.as @@ -511,7 +511,7 @@ package spine { } public function toString() : String { - return _data.name != null ? _data.name : super.toString(); + return _data.name == null ? "null" : _data.name; } public function getBounds(offset : Vector., size : Vector., temp : Vector.) : void { diff --git a/spine-as3/spine-as3/src/spine/SkeletonData.as b/spine-as3/spine-as3/src/spine/SkeletonData.as index a1f4236b5..e41621a19 100644 --- a/spine-as3/spine-as3/src/spine/SkeletonData.as +++ b/spine-as3/spine-as3/src/spine/SkeletonData.as @@ -166,7 +166,7 @@ package spine { // --- public function toString() : String { - return name != null ? name : super.toString(); + return name == null ? "null" : name; } } } diff --git a/spine-as3/spine-as3/src/spine/SkeletonJson.as b/spine-as3/spine-as3/src/spine/SkeletonJson.as index dd518a48e..2378c26c9 100644 --- a/spine-as3/spine-as3/src/spine/SkeletonJson.as +++ b/spine-as3/spine-as3/src/spine/SkeletonJson.as @@ -96,8 +96,6 @@ package spine { if (skeletonMap) { skeletonData.hash = skeletonMap["hash"]; skeletonData.version = skeletonMap["spine"]; - if ("3.8.75" == skeletonData.version) - throw new Error("Unsupported skeleton data, please export with a newer version of Spine."); skeletonData.x = skeletonMap["x"] || 0; skeletonData.y = skeletonMap["y"] || 0; skeletonData.width = skeletonMap["width"] || 0; @@ -126,6 +124,10 @@ package spine { boneData.shearY = Number(boneMap["shearY"] || 0); boneData.transformMode = TransformMode[boneMap["transform"] || "normal"]; boneData.skinRequired = boneMap.hasOwnProperty("skin") ? boneMap["skin"] : false; + + color = boneMap["color"]; + if (color) boneData.color.setFromString(color); + skeletonData.bones.push(boneData); } @@ -138,14 +140,10 @@ package spine { var slotData : SlotData = new SlotData(skeletonData.slots.length, slotName, boneData); var color : String = slotMap["color"]; - if (color) { - slotData.color.setFrom(toColor(color, 0), toColor(color, 1), toColor(color, 2), toColor(color, 3)); - } + if (color) slotData.color.setFromString(color); var dark : String = slotMap["dark"]; - if (dark) { - slotData.darkColor = new Color(toColor(dark, 0), toColor(dark, 1), toColor(dark, 2), 0); - } + if (dark) slotData.darkColor = Color.fromString(dark); slotData.attachmentName = slotMap["attachment"]; slotData.blendMode = BlendMode[slotMap["blend"] || "normal"]; @@ -248,15 +246,16 @@ package spine { if (skinMap["bones"]) { for (ii = 0; ii < skinMap["bones"].length; ii++) { - var boneData : BoneData = skeletonData.findBone(skinMap["bones"][ii]); + boneData = skeletonData.findBone(skinMap["bones"][ii]); if (boneData == null) throw new Error("Skin bone not found: " + skinMap["bones"][ii]); skin.bones.push(boneData); } } + var constraint : ConstraintData; if (skinMap["ik"]) { for (ii = 0; ii < skinMap["ik"].length; ii++) { - var constraint : ConstraintData = skeletonData.findIkConstraint(skinMap["ik"][ii]); + constraint = skeletonData.findIkConstraint(skinMap["ik"][ii]); if (constraint == null) throw new Error("Skin IK constraint not found: " + skinMap["ik"][ii]); skin.constraints.push(constraint); } @@ -264,7 +263,7 @@ package spine { if (skinMap["transform"]) { for (ii = 0; ii < skinMap["transform"].length; ii++) { - var constraint : ConstraintData = skeletonData.findTransformConstraint(skinMap["transform"][ii]); + constraint = skeletonData.findTransformConstraint(skinMap["transform"][ii]); if (constraint == null) throw new Error("Skin transform constraint not found: " + skinMap["transform"][ii]); skin.constraints.push(constraint); } @@ -272,7 +271,7 @@ package spine { if (skinMap["path"]) { for (ii = 0; ii < skinMap["path"].length; ii++) { - var constraint : ConstraintData = skeletonData.findPathConstraint(skinMap["path"][ii]); + constraint = skeletonData.findPathConstraint(skinMap["path"][ii]); if (constraint == null) throw new Error("Skin path constraint not found: " + skinMap["path"][ii]); skin.constraints.push(constraint); } @@ -351,10 +350,10 @@ package spine { region.rotation = map["rotation"] || 0; region.width = Number(map["width"] || 0) * scale; region.height = Number(map["height"] || 0) * scale; + color = map["color"]; - if (color) { - region.color.setFrom(toColor(color, 0), toColor(color, 1), toColor(color, 2), toColor(color, 3)); - } + if (color) region.color.setFromString(color); + region.updateOffset(); return region; case AttachmentType.mesh: @@ -362,10 +361,10 @@ package spine { var mesh : MeshAttachment = attachmentLoader.newMeshAttachment(skin, name, map["path"] || name); if (!mesh) return null; mesh.path = map["path"] || name; + color = map["color"]; - if (color) { - mesh.color.setFrom(toColor(color, 0), toColor(color, 1), toColor(color, 2), toColor(color, 3)); - } + if (color) mesh.color.setFromString(color); + mesh.width = Number(map["width"] || 0) * scale; mesh.height = Number(map["height"] || 0) * scale; if (map["parent"]) { @@ -405,10 +404,10 @@ package spine { point.x = map.hasOwnProperty("x") ? Number(map["x"]) * scale : 0; point.y = map.hasOwnProperty("y") ? Number(map["y"]) * scale : 0; point.rotation = map.hasOwnProperty("rotation") ? Number(map["rotation"]) : 0; + color = map["color"]; - if (color) { - point.color.setFrom(toColor(color, 0), toColor(color, 1), toColor(color, 2), toColor(color, 3)); - } + if (color) point.color.setFromString(color); + return point; case AttachmentType.clipping: var clip : ClippingAttachment = attachmentLoader.newClippingAttachment(skin, name); @@ -422,10 +421,10 @@ package spine { vertexCount = int(map["vertexCount"]); readVertices(map, clip, vertexCount << 1); + color = map["color"]; - if (color) { - clip.color.setFrom(toColor(color, 0), toColor(color, 1), toColor(color, 2), toColor(color, 3)); - } + if (color) clip.color.setFromString(color); + return clip; } @@ -495,12 +494,8 @@ package spine { frameIndex = 0; for each (valueMap in values) { - var color : String = valueMap["color"]; - var r : Number = toColor(color, 0); - var g : Number = toColor(color, 1); - var b : Number = toColor(color, 2); - var a : Number = toColor(color, 3); - colorTimeline.setFrame(frameIndex, Number(valueMap["time"] || 0), r, g, b, a); + var frameColor : Color = Color.fromString(valueMap["color"]); + colorTimeline.setFrame(frameIndex, Number(valueMap["time"] || 0), frameColor.r, frameColor.g, frameColor.b, frameColor.a); readCurve(valueMap, colorTimeline, frameIndex); frameIndex++; } @@ -512,12 +507,10 @@ package spine { frameIndex = 0; for each (valueMap in values) { - color = valueMap["light"]; + var color : String = valueMap["light"]; var darkColor : String = valueMap["dark"]; - var light : Color = new Color(0, 0, 0, 0); - var dark : Color = new Color(0, 0, 0, 0); - light.setFrom(toColor(color, 0), toColor(color, 1), toColor(color, 2), toColor(color, 3)); - dark.setFrom(toColor(darkColor, 0), toColor(darkColor, 1), toColor(darkColor, 2), toColor(darkColor, 3)); + var light : Color = Color.fromString(color); + var dark : Color = Color.fromString(darkColor); twoColorTimeline.setFrame(frameIndex, Number(valueMap["time"] || 0), light.r, light.g, light.b, light.a, dark.r, dark.g, dark.b); readCurve(valueMap, twoColorTimeline, frameIndex); frameIndex++; @@ -797,11 +790,6 @@ package spine { } } - static private function toColor(hexString : String, colorIndex : int) : Number { - if (hexString.length != 8 && hexString.length != 6) throw new ArgumentError("Color hexidecimal length must be 6 or 8, received: " + hexString); - return parseInt(hexString.substring(colorIndex * 2, colorIndex * 2 + 2), 16) / 255; - } - static private function getFloatArray(map : Object, name : String, scale : Number) : Vector. { var list : Array = map[name]; var values : Vector. = new Vector.(list.length, true); diff --git a/spine-as3/spine-as3/src/spine/animation/AnimationState.as b/spine-as3/spine-as3/src/spine/animation/AnimationState.as index 9ef7c419d..ff7cb0d7c 100644 --- a/spine-as3/spine-as3/src/spine/animation/AnimationState.as +++ b/spine-as3/spine-as3/src/spine/animation/AnimationState.as @@ -182,9 +182,10 @@ package spine.animation { var timelineCount : int = current.animation.timelines.length; var timelines : Vector. = current.animation.timelines; var ii : int = 0; + var timeline : Timeline; if ((i == 0 && mix == 1) || blend == MixBlend.add) { for (ii = 0; ii < timelineCount; ii++) { - var timeline : Timeline = timelines[ii]; + timeline = timelines[ii]; if (timeline is AttachmentTimeline) { applyAttachmentTimeline(AttachmentTimeline(timeline), skeleton, animationTime, blend, true); } else { @@ -199,7 +200,7 @@ package spine.animation { var timelinesRotation : Vector. = current.timelinesRotation; for (ii = 0; ii < timelineCount; ii++) { - var timeline : Timeline = timelines[ii]; + timeline = timelines[ii]; var timelineBlend : MixBlend = timelineMode[ii] == SUBSEQUENT ? blend : MixBlend.setup; if (timeline is RotateTimeline) { applyRotateTimeline(timeline, skeleton, animationTime, mix, timelineBlend, timelinesRotation, ii << 1, firstFrame); @@ -220,8 +221,8 @@ package spine.animation { // the time is before the first key). var setupState : int = unkeyedState + SETUP; var slots : Vector. = skeleton.slots; - for (var i : int = 0, n : int = skeleton.slots.length; i < n; i++) { - var slot : Slot = slots[i]; + for (var si : int = 0, sn : int = skeleton.slots.length; si < sn; si++) { + var slot : Slot = slots[si]; if (slot.attachmentState == setupState) { var attachmentName : String = slot.data.attachmentName; slot.attachment = (attachmentName == null ? null : skeleton.getAttachmentForSlotIndex(slot.data.index, attachmentName));