Organized and simplified spine-starling.

This commit is contained in:
NathanSweet 2013-05-04 11:38:23 +02:00
parent 9cadc92b97
commit 45f93ca31f
8 changed files with 31 additions and 56 deletions

View File

@ -17,18 +17,19 @@
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/spark.swc" useDefaultLinkType="false"/> <libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/spark.swc" useDefaultLinkType="false"/>
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/sparkskins.swc" useDefaultLinkType="false"/> <libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/sparkskins.swc" useDefaultLinkType="false"/>
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/rpc.swc" useDefaultLinkType="false"/> <libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/rpc.swc" useDefaultLinkType="false"/>
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/videoPlayer.swc" useDefaultLinkType="false"/>
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/qtp_air.swc" useDefaultLinkType="false"/>
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/datavisualization.swc" useDefaultLinkType="false"/> <libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/datavisualization.swc" useDefaultLinkType="false"/>
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/qtp_air.swc" useDefaultLinkType="false"/>
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/videoPlayer.swc" useDefaultLinkType="false"/>
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/spark_dmv.swc" useDefaultLinkType="false"/> <libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/spark_dmv.swc" useDefaultLinkType="false"/>
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/automation.swc" useDefaultLinkType="false"/> <libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/automation.swc" useDefaultLinkType="false"/>
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/flash-integration.swc" useDefaultLinkType="false"/>
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/automation_dmv.swc" useDefaultLinkType="false"/> <libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/automation_dmv.swc" useDefaultLinkType="false"/>
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/flash-integration.swc" useDefaultLinkType="false"/>
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/automation_flashflexkit.swc" useDefaultLinkType="false"/> <libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/automation_flashflexkit.swc" useDefaultLinkType="false"/>
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/automation_agent.swc" useDefaultLinkType="false"/> <libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/automation_agent.swc" useDefaultLinkType="false"/>
</excludedEntries> </excludedEntries>
</libraryPathEntry> </libraryPathEntry>
<libraryPathEntry kind="3" linkType="1" path="/spine-starling/bin/spine-starling.swc" useDefaultLinkType="false"/> <libraryPathEntry kind="3" linkType="1" path="/spine-starling/bin/spine-starling.swc" useDefaultLinkType="false"/>
<libraryPathEntry kind="3" linkType="1" path="/spine-as3/bin/spine-as3.swc" useDefaultLinkType="false"/>
</libraryPath> </libraryPath>
<sourceAttachmentPath/> <sourceAttachmentPath/>
</compiler> </compiler>

View File

@ -1,9 +1,10 @@
package { package {
import spine.AnimationStateData; import spine.AnimationStateData;
import spine.SkeletonAnimationSprite;
import spine.SkeletonData; import spine.SkeletonData;
import spine.StarlingSkeletonJson; import spine.SkeletonJson;
import spine.starling.SkeletonAnimationSprite;
import spine.starling.StarlingAtlasAttachmentLoader;
import starling.core.Starling; import starling.core.Starling;
import starling.display.Sprite; import starling.display.Sprite;
@ -30,7 +31,7 @@ public class Game extends Sprite {
var xml:XML = XML(new SpineboyAtlasXml()); var xml:XML = XML(new SpineboyAtlasXml());
var atlas:TextureAtlas = new TextureAtlas(texture, xml); var atlas:TextureAtlas = new TextureAtlas(texture, xml);
var json:StarlingSkeletonJson = new StarlingSkeletonJson(atlas); var json:SkeletonJson = new SkeletonJson(new StarlingAtlasAttachmentLoader(atlas));
var skeletonData:SkeletonData = json.readSkeletonData(new SpineboyJson()); var skeletonData:SkeletonData = json.readSkeletonData(new SpineboyJson());
var stateData:AnimationStateData = new AnimationStateData(skeletonData); var stateData:AnimationStateData = new AnimationStateData(skeletonData);
@ -42,9 +43,9 @@ public class Game extends Sprite {
skeleton.setAnimationStateData(stateData); skeleton.setAnimationStateData(stateData);
skeleton.x = 320; skeleton.x = 320;
skeleton.y = 420; skeleton.y = 420;
skeleton.setAnimation("walk", true); /*skeleton.setAnimation("walk", true);
skeleton.addAnimation("jump", false, 3); skeleton.addAnimation("jump", false, 3);
skeleton.addAnimation("walk", true); skeleton.addAnimation("walk", true);*/
addChild(skeleton); addChild(skeleton);
Starling.juggler.add(skeleton); Starling.juggler.add(skeleton);

View File

@ -7,15 +7,15 @@
<excludedEntries> <excludedEntries>
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/automation_charts.swc" useDefaultLinkType="false"/> <libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/automation_charts.swc" useDefaultLinkType="false"/>
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/advancedgrids.swc" useDefaultLinkType="false"/> <libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/advancedgrids.swc" useDefaultLinkType="false"/>
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/charts.swc" useDefaultLinkType="false"/>
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/automation_air.swc" useDefaultLinkType="false"/> <libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/automation_air.swc" useDefaultLinkType="false"/>
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/locale/{locale}" useDefaultLinkType="false"/> <libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/charts.swc" useDefaultLinkType="false"/>
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/netmon.swc" useDefaultLinkType="false"/> <libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/netmon.swc" useDefaultLinkType="false"/>
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/locale/{locale}" useDefaultLinkType="false"/>
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/spark.swc" useDefaultLinkType="false"/> <libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/spark.swc" useDefaultLinkType="false"/>
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/sparkskins.swc" useDefaultLinkType="false"/> <libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/sparkskins.swc" useDefaultLinkType="false"/>
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/rpc.swc" useDefaultLinkType="false"/> <libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/rpc.swc" useDefaultLinkType="false"/>
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/qtp_air.swc" useDefaultLinkType="false"/>
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/videoPlayer.swc" useDefaultLinkType="false"/> <libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/videoPlayer.swc" useDefaultLinkType="false"/>
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/qtp_air.swc" useDefaultLinkType="false"/>
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/flash-integration.swc" useDefaultLinkType="false"/> <libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/flash-integration.swc" useDefaultLinkType="false"/>
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/authoringsupport.swc" useDefaultLinkType="false"/> <libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/authoringsupport.swc" useDefaultLinkType="false"/>
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/qtp.swc" useDefaultLinkType="false"/> <libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/qtp.swc" useDefaultLinkType="false"/>
@ -33,8 +33,8 @@
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/automation_agent.swc" useDefaultLinkType="false"/> <libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/automation_agent.swc" useDefaultLinkType="false"/>
</excludedEntries> </excludedEntries>
</libraryPathEntry> </libraryPathEntry>
<libraryPathEntry kind="3" linkType="1" path="/spine-as3/bin/spine-as3.swc" useDefaultLinkType="false"/>
<libraryPathEntry kind="3" linkType="1" path="libs/starling.swc" useDefaultLinkType="false"/> <libraryPathEntry kind="3" linkType="1" path="libs/starling.swc" useDefaultLinkType="false"/>
<libraryPathEntry kind="3" linkType="1" path="/spine-as3/bin/spine-as3.swc" useDefaultLinkType="false"/>
</libraryPath> </libraryPath>
<sourceAttachmentPath/> <sourceAttachmentPath/>
</compiler> </compiler>

View File

@ -1,34 +0,0 @@
package spine {
import flash.utils.ByteArray;
import spine.Bone;
import spine.SkeletonData;
import spine.SkeletonJson;
import spine.attachments.AttachmentLoader;
import starling.textures.TextureAtlas;
public class StarlingSkeletonJson {
private var json:SkeletonJson;
/** @param object A TextureAtlas or AttachmentLoader. */
public function StarlingSkeletonJson (object:*) {
if (object is TextureAtlas)
json = new SkeletonJson(new StarlingAtlasAttachmentLoader(object));
else if (object is AttachmentLoader)
json = new SkeletonJson(AttachmentLoader(object));
else
throw new Error("object must be a TextureAtlas or AttachmentLoader.");
Bone.yDown = true;
}
/** @param object A String or ByteArray. */
public function readSkeletonData (object:*, name:String = null) : SkeletonData {
if (object is String) return json.readSkeletonData(String(object), name);
if (object is ByteArray) return json.readSkeletonData(object.readUTFBytes(object.length), name);
throw new Error("object must be a String or ByteArray.");
}
}
}

View File

@ -1,4 +1,7 @@
package spine { package spine.starling {
import spine.AnimationState;
import spine.AnimationStateData;
import spine.SkeletonData;
public class SkeletonAnimationSprite extends SkeletonSprite { public class SkeletonAnimationSprite extends SkeletonSprite {
public var states:Vector.<AnimationState> = new Vector.<AnimationState>(); public var states:Vector.<AnimationState> = new Vector.<AnimationState>();

View File

@ -1,4 +1,4 @@
package spine { package spine.starling {
import starling.display.Image; import starling.display.Image;
import starling.textures.Texture; import starling.textures.Texture;

View File

@ -1,4 +1,4 @@
package spine { package spine.starling {
import flash.geom.Matrix; import flash.geom.Matrix;
import flash.geom.Point; import flash.geom.Point;
import flash.geom.Rectangle; import flash.geom.Rectangle;
@ -9,6 +9,10 @@ import starling.animation.IAnimatable;
import starling.core.RenderSupport; import starling.core.RenderSupport;
import starling.display.DisplayObject; import starling.display.DisplayObject;
import starling.utils.MatrixUtil; import starling.utils.MatrixUtil;
import spine.Bone;
import spine.Skeleton;
import spine.SkeletonData;
import spine.Slot;
public class SkeletonSprite extends DisplayObject implements IAnimatable { public class SkeletonSprite extends DisplayObject implements IAnimatable {
static private var tempPoint:Point = new Point(); static private var tempPoint:Point = new Point();
@ -17,14 +21,14 @@ public class SkeletonSprite extends DisplayObject implements IAnimatable {
private var _skeleton:Skeleton; private var _skeleton:Skeleton;
public function SkeletonSprite (skeletonData:SkeletonData) { public function SkeletonSprite (skeletonData:SkeletonData) {
Bone.yDown = true;
_skeleton = new Skeleton(skeletonData); _skeleton = new Skeleton(skeletonData);
_skeleton.updateWorldTransform(); _skeleton.updateWorldTransform();
Bone.yDown = true;
} }
public function advanceTime (time:Number) : void { public function advanceTime (delta:Number) : void {
_skeleton.update(time); _skeleton.update(delta);
} }
override public function render (support:RenderSupport, alpha:Number) : void { override public function render (support:RenderSupport, alpha:Number) : void {
@ -40,7 +44,7 @@ public class SkeletonSprite extends DisplayObject implements IAnimatable {
var b:Number = skeleton.b * slot.b; var b:Number = skeleton.b * slot.b;
var a:Number = skeleton.a * slot.a; var a:Number = skeleton.a * slot.a;
var image:SkeletonImage = regionAttachment.texture as SkeletonImage; var image:SkeletonImage = regionAttachment.rendererObject as SkeletonImage;
var vertexData:Vector.<Number> = image.vertexData.rawData; var vertexData:Vector.<Number> = image.vertexData.rawData;
vertexData[0] = vertices[2]; vertexData[0] = vertices[2];

View File

@ -1,4 +1,4 @@
package spine { package spine.starling {
import spine.Bone; import spine.Bone;
import spine.Skin; import spine.Skin;
import spine.attachments.Attachment; import spine.attachments.Attachment;
@ -22,7 +22,7 @@ public class StarlingAtlasAttachmentLoader implements AttachmentLoader {
if (type == AttachmentType.region) { if (type == AttachmentType.region) {
var regionAttachment:RegionAttachment = new RegionAttachment(name); var regionAttachment:RegionAttachment = new RegionAttachment(name);
var texture:Texture = atlas.getTexture(name); var texture:Texture = atlas.getTexture(name);
regionAttachment.texture = new SkeletonImage(texture); regionAttachment.rendererObject = new SkeletonImage(texture);
regionAttachment.regionOffsetX = texture.frame.x; regionAttachment.regionOffsetX = texture.frame.x;
regionAttachment.regionOffsetY = texture.frame.y; regionAttachment.regionOffsetY = texture.frame.y;
regionAttachment.regionWidth = texture.width; regionAttachment.regionWidth = texture.width;