diff --git a/spine-as3/spine-as3/src/spine/SkeletonJson.as b/spine-as3/spine-as3/src/spine/SkeletonJson.as index 18fb9de15..8dbd9a604 100644 --- a/spine-as3/spine-as3/src/spine/SkeletonJson.as +++ b/spine-as3/spine-as3/src/spine/SkeletonJson.as @@ -176,6 +176,15 @@ public class SkeletonJson { regionAttachment.rotation = map["rotation"] || 0; regionAttachment.width = (map["width"] || 32) * scale; regionAttachment.height = (map["height"] || 32) * scale; + + var color:String = map["color"]; + if (color) { + regionAttachment.r = toColor(color, 0); + regionAttachment.g = toColor(color, 1); + regionAttachment.b = toColor(color, 2); + regionAttachment.a = toColor(color, 3); + } + regionAttachment.updateOffset(); } else if (attachment is BoundingBoxAttachment) { var box:BoundingBoxAttachment = attachment as BoundingBoxAttachment; diff --git a/spine-as3/spine-as3/src/spine/attachments/RegionAttachment.as b/spine-as3/spine-as3/src/spine/attachments/RegionAttachment.as index 1a1e71487..30c79a528 100644 --- a/spine-as3/spine-as3/src/spine/attachments/RegionAttachment.as +++ b/spine-as3/spine-as3/src/spine/attachments/RegionAttachment.as @@ -46,6 +46,10 @@ public dynamic class RegionAttachment extends Attachment { public var rotation:Number; public var width:Number; public var height:Number; + public var r:Number = 1; + public var g:Number = 1; + public var b:Number = 1; + public var a:Number = 1; public var rendererObject:Object; public var regionOffsetX:Number; // Pixels stripped from the bottom left, unrotated. diff --git a/spine-as3/spine-as3/src/spine/flash/SkeletonSprite.as b/spine-as3/spine-as3/src/spine/flash/SkeletonSprite.as index 7cfe7937d..ac466c0f5 100644 --- a/spine-as3/spine-as3/src/spine/flash/SkeletonSprite.as +++ b/spine-as3/spine-as3/src/spine/flash/SkeletonSprite.as @@ -119,10 +119,10 @@ public class SkeletonSprite extends Sprite { wrapper.blendMode = slot.data.additiveBlending ? BlendMode.ADD : BlendMode.NORMAL; var colorTransform:ColorTransform = wrapper.transform.colorTransform; - colorTransform.redMultiplier = skeleton.r * slot.r; - colorTransform.greenMultiplier = skeleton.g * slot.g; - colorTransform.blueMultiplier = skeleton.b * slot.b; - colorTransform.alphaMultiplier = skeleton.a * slot.a; + colorTransform.redMultiplier = skeleton.r * slot.r * regionAttachment.r; + colorTransform.greenMultiplier = skeleton.g * slot.g * regionAttachment.g; + colorTransform.blueMultiplier = skeleton.b * slot.b * regionAttachment.b; + colorTransform.alphaMultiplier = skeleton.a * slot.a * regionAttachment.a; wrapper.transform.colorTransform = colorTransform; var flipX:int = skeleton.flipX ? -1 : 1; diff --git a/spine-starling/spine-starling/src/spine/starling/SkeletonSprite.as b/spine-starling/spine-starling/src/spine/starling/SkeletonSprite.as index d3d8fc48d..7f4774cb3 100644 --- a/spine-starling/spine-starling/src/spine/starling/SkeletonSprite.as +++ b/spine-starling/spine-starling/src/spine/starling/SkeletonSprite.as @@ -79,8 +79,11 @@ public class SkeletonSprite extends DisplayObject implements IAnimatable { if (regionAttachment != null) { var vertices:Vector. = tempVertices; regionAttachment.computeWorldVertices(x, y, slot.bone, vertices); - var a:Number = slot.a; - var rgb:uint = Color.rgb(r * slot.r, g * slot.g, b * slot.b); + var a:Number = slot.a * regionAttachment.a; + var rgb:uint = Color.rgb( + r * slot.r * regionAttachment.r, + g * slot.g * regionAttachment.g, + b * slot.b * regionAttachment.b); var image:SkeletonImage; image = regionAttachment.rendererObject as SkeletonImage;