Эх сурвалжийг харах

[ts] Use constant values instead of static fields.

Even this ugliness is less ugly than TypeScript static field access. Smaller too.
Nathan Sweet 4 жил өмнө
parent
commit
3ecf7929bf
1 өөрчлөгдсөн 274 нэмэгдсэн , 310 устгасан
  1. 274 310
      spine-ts/core/src/Animation.ts

+ 274 - 310
spine-ts/core/src/Animation.ts

@@ -191,33 +191,30 @@ module spine {
 		slotIndex: number;
 	}
 
-	const LINEAR = 0; const STEPPED = 1; const BEZIER = 2;
-	const BEZIER_SIZE = 18;
-
 	/** The base class for timelines that use interpolation between key frame values. */
 	export abstract class CurveTimeline extends Timeline {
 		protected curves: ArrayLike<number>; // type, x, y, ...
 
 		constructor (frameCount: number, bezierCount: number, propertyIds: string[]) {
 			super(frameCount, propertyIds);
-			this.curves = Utils.newFloatArray(frameCount + bezierCount * BEZIER_SIZE);
-			this.curves[frameCount - 1] = STEPPED;
+			this.curves = Utils.newFloatArray(frameCount + bezierCount * 18/*BEZIER_SIZE*/);
+			this.curves[frameCount - 1] = 1/*STEPPED*/;
 		}
 
 		/** Sets the specified key frame to linear interpolation. */
 		setLinear (frame: number) {
-			this.curves[frame] = LINEAR;
+			this.curves[frame] = 0/*LINEAR*/;
 		}
 
 		/** Sets the specified key frame to stepped interpolation. */
 		setStepped (frame: number) {
-			this.curves[frame] = STEPPED;
+			this.curves[frame] = 1/*STEPPED*/;
 		}
 
 		/** Shrinks the storage for Bezier curves, for use when <code>bezierCount</code> (specified in the constructor) was larger
 		 * than the actual number of Bezier curves. */
 		shrink (bezierCount: number) {
-			let size = this.getFrameCount() + bezierCount * BEZIER_SIZE;
+			let size = this.getFrameCount() + bezierCount * 18/*BEZIER_SIZE*/;
 			if (this.curves.length > size) {
 				let newCurves = Utils.newFloatArray(size);
 				Utils.arrayCopy(this.curves, 0, newCurves, 0, size);
@@ -242,14 +239,14 @@ module spine {
 		setBezier (bezier: number, frame: number, value: number, time1: number, value1: number, cx1: number, cy1: number, cx2: number,
 			cy2: number, time2: number, value2: number) {
 			let curves = this.curves;
-			let i = this.getFrameCount() + bezier * BEZIER_SIZE;
-			if (value == 0) curves[frame] = BEZIER + i;
+			let i = this.getFrameCount() + bezier * 18/*BEZIER_SIZE*/;
+			if (value == 0) curves[frame] = 2/*BEZIER*/ + i;
 			let tmpx = (time1 - cx1 * 2 + cx2) * 0.03, tmpy = (value1 - cy1 * 2 + cy2) * 0.03;
 			let dddx = ((cx1 - cx2) * 3 - time1 + time2) * 0.006, dddy = ((cy1 - cy2) * 3 - value1 + value2) * 0.006;
 			let ddx = tmpx * 2 + dddx, ddy = tmpy * 2 + dddy;
 			let dx = (cx1 - time1) * 0.3 + tmpx + dddx * 0.16666667, dy = (cy1 - value1) * 0.3 + tmpy + dddy * 0.16666667;
 			let x = time1 + dx, y = value1 + dy;
-			for (let n = i + BEZIER_SIZE; i < n; i += 2) {
+			for (let n = i + 18/*BEZIER_SIZE*/; i < n; i += 2) {
 				curves[i] = x;
 				curves[i + 1] = y;
 				dx += ddx;
@@ -271,7 +268,7 @@ module spine {
 				let x = this.frames[frameIndex], y = this.frames[frameIndex + valueOffset];
 				return y + (time - x) / (curves[i] - x) * (curves[i + 1] - y);
 			}
-			let n = i + BEZIER_SIZE;
+			let n = i + 18/*BEZIER_SIZE*/;
 			for (i += 2; i < n; i += 2) {
 				if (curves[i] >= time) {
 					let x = curves[i - 2], y = curves[i - 1];
@@ -285,15 +282,12 @@ module spine {
 	}
 
 	export abstract class CurveTimeline1 extends CurveTimeline {
-		static ENTRIES = 2;
-		static VALUE = 1;
-
 		constructor(frameCount: number, bezierCount: number, propertyIds: string[]) {
 			super(frameCount, bezierCount, propertyIds);
 		}
 
 		getFrameEntries () {
-			return CurveTimeline1.ENTRIES;
+			return 2/*ENTRIES*/;
 		}
 
 		/** Sets the time and value for the specified frame.
@@ -302,7 +296,7 @@ module spine {
 		setFrame (frame: number, time: number, value: number) {
 			frame <<= 1;
 			this.frames[frame] = time;
-			this.frames[frame + CurveTimeline1.VALUE] = value;
+			this.frames[frame + 1/*VALUE*/] = value;
 		}
 
 		/** Returns the interpolated value for the specified time. */
@@ -318,21 +312,18 @@ module spine {
 
 			let curveType = this.curves[i >> 1];
 			switch (curveType) {
-			case LINEAR:
-				let before = frames[i], value = frames[i + CurveTimeline1.VALUE];
-				return value + (time - before) / (frames[i + CurveTimeline1.ENTRIES] - before) * (frames[i + CurveTimeline1.ENTRIES + CurveTimeline1.VALUE] - value);
-			case STEPPED:
-				return frames[i + CurveTimeline1.VALUE];
+			case 0/*LINEAR*/:
+				let before = frames[i], value = frames[i + 1/*VALUE*/];
+				return value + (time - before) / (frames[i + 2/*ENTRIES*/] - before) * (frames[i + 2/*ENTRIES*/ + 1/*VALUE*/] - value);
+			case 1/*STEPPED*/:
+				return frames[i + 1/*VALUE*/];
 			}
-			return this.getBezierValue(time, i, CurveTimeline1.VALUE, curveType - BEZIER);
+			return this.getBezierValue(time, i, 1/*VALUE*/, curveType - 2/*BEZIER*/);
 		}
 	}
 
 	/** The base class for a {@link CurveTimeline} which sets two properties. */
 	export abstract class CurveTimeline2 extends CurveTimeline {
-		static ENTRIES = 3;
-		static VALUE1 = 1; static VALUE2 = 2;
-
 		/** @param bezierCount The maximum number of Bezier curves. See {@link #shrink(int)}.
 		 * @param propertyIds Unique identifiers for the properties the timeline modifies. */
 		constructor (frameCount: number, bezierCount: number, propertyIds: string[]) {
@@ -340,17 +331,17 @@ module spine {
 		}
 
 		getFrameEntries () {
-			return CurveTimeline2.ENTRIES;
+			return 3/*ENTRIES*/;
 		}
 
 		/** Sets the time and values for the specified frame.
 		 * @param frame Between 0 and <code>frameCount</code>, inclusive.
 		 * @param time The frame time in seconds. */
 		setFrame (frame: number, time: number, value1: number, value2: number) {
-			frame *= CurveTimeline2.ENTRIES;
+			frame *= 3/*ENTRIES*/;
 			this.frames[frame] = time;
-			this.frames[frame + CurveTimeline2.VALUE1] = value1;
-			this.frames[frame + CurveTimeline2.VALUE2] = value2;
+			this.frames[frame + 1/*VALUE1*/] = value1;
+			this.frames[frame + 2/*VALUE2*/] = value2;
 		}
 	}
 
@@ -426,24 +417,24 @@ module spine {
 			}
 
 			let x = 0, y = 0;
-			let i = Timeline.search2(frames, time, CurveTimeline2.ENTRIES);
-			let curveType = this.curves[i / CurveTimeline2.ENTRIES];
+			let i = Timeline.search2(frames, time, 3/*ENTRIES*/);
+			let curveType = this.curves[i / 3/*ENTRIES*/];
 			switch (curveType) {
-			case LINEAR:
+			case 0/*LINEAR*/:
 				let before = frames[i];
-				x = frames[i + CurveTimeline2.VALUE1];
-				y = frames[i + CurveTimeline2.VALUE2];
-				let t = (time - before) / (frames[i + CurveTimeline2.ENTRIES] - before);
-				x += (frames[i + CurveTimeline2.ENTRIES + CurveTimeline2.VALUE1] - x) * t;
-				y += (frames[i + CurveTimeline2.ENTRIES + CurveTimeline2.VALUE2] - y) * t;
+				x = frames[i + 1/*VALUE1*/];
+				y = frames[i + 2/*VALUE2*/];
+				let t = (time - before) / (frames[i + 3/*ENTRIES*/] - before);
+				x += (frames[i + 3/*ENTRIES*/ + 1/*VALUE1*/] - x) * t;
+				y += (frames[i + 3/*ENTRIES*/ + 2/*VALUE2*/] - y) * t;
 				break;
-			case STEPPED:
-				x = frames[i + CurveTimeline2.VALUE1];
-				y = frames[i + CurveTimeline2.VALUE2];
+			case 1/*STEPPED*/:
+				x = frames[i + 1/*VALUE1*/];
+				y = frames[i + 2/*VALUE2*/];
 				break;
 			default:
-				x = this.getBezierValue(time, i, CurveTimeline2.VALUE1, curveType - BEZIER);
-				y = this.getBezierValue(time, i, CurveTimeline2.VALUE2, curveType + BEZIER_SIZE - BEZIER);
+				x = this.getBezierValue(time, i, 1/*VALUE1*/, curveType - 2/*BEZIER*/);
+				y = this.getBezierValue(time, i, 2/*VALUE2*/, curveType + 18/*BEZIER_SIZE*/ - 2/*BEZIER*/);
 			}
 
 			switch (blend) {
@@ -578,24 +569,24 @@ module spine {
 			}
 
 			let x = 0, y = 0;
-			let i = Timeline.search2(frames, time, CurveTimeline2.ENTRIES);
-			let curveType = this.curves[i / CurveTimeline2.ENTRIES];
+			let i = Timeline.search2(frames, time, 3/*ENTRIES*/);
+			let curveType = this.curves[i / 3/*ENTRIES*/];
 			switch (curveType) {
-			case LINEAR:
+			case 0/*LINEAR*/:
 				let before = frames[i];
-				x = frames[i + CurveTimeline2.VALUE1];
-				y = frames[i + CurveTimeline2.VALUE2];
-				let t = (time - before) / (frames[i + CurveTimeline2.ENTRIES] - before);
-				x += (frames[i + CurveTimeline2.ENTRIES + CurveTimeline2.VALUE1] - x) * t;
-				y += (frames[i + CurveTimeline2.ENTRIES + CurveTimeline2.VALUE2] - y) * t;
+				x = frames[i + 1/*VALUE1*/];
+				y = frames[i + 2/*VALUE2*/];
+				let t = (time - before) / (frames[i + 3/*ENTRIES*/] - before);
+				x += (frames[i + 3/*ENTRIES*/ + 1/*VALUE1*/] - x) * t;
+				y += (frames[i + 3/*ENTRIES*/ + 2/*VALUE2*/] - y) * t;
 				break;
-			case STEPPED:
-				x = frames[i + CurveTimeline2.VALUE1];
-				y = frames[i + CurveTimeline2.VALUE2];
+			case 1/*STEPPED*/:
+				x = frames[i + 1/*VALUE1*/];
+				y = frames[i + 2/*VALUE2*/];
 				break;
 			default:
-				x = this.getBezierValue(time, i, CurveTimeline2.VALUE1, curveType - BEZIER);
-				y = this.getBezierValue(time, i, CurveTimeline2.VALUE2, curveType + BEZIER_SIZE - BEZIER);
+				x = this.getBezierValue(time, i, 1/*VALUE1*/, curveType - 2/*BEZIER*/);
+				y = this.getBezierValue(time, i, 2/*VALUE2*/, curveType + 18/*BEZIER_SIZE*/ - 2/*BEZIER*/);
 			}
 			x *= bone.data.scaleX;
 			y *= bone.data.scaleY;
@@ -830,24 +821,24 @@ module spine {
 			}
 
 			let x = 0, y = 0;
-			let i = Timeline.search2(frames, time, CurveTimeline2.ENTRIES);
-			let curveType = this.curves[i / CurveTimeline2.ENTRIES];
+			let i = Timeline.search2(frames, time, 3/*ENTRIES*/);
+			let curveType = this.curves[i / 3/*ENTRIES*/];
 			switch (curveType) {
-			case LINEAR:
+			case 0/*LINEAR*/:
 				let before = frames[i];
-				x = frames[i + CurveTimeline2.VALUE1];
-				y = frames[i + CurveTimeline2.VALUE2];
-				let t = (time - before) / (frames[i + CurveTimeline2.ENTRIES] - before);
-				x += (frames[i + CurveTimeline2.ENTRIES + CurveTimeline2.VALUE1] - x) * t;
-				y += (frames[i + CurveTimeline2.ENTRIES + CurveTimeline2.VALUE2] - y) * t;
+				x = frames[i + 1/*VALUE1*/];
+				y = frames[i + 2/*VALUE2*/];
+				let t = (time - before) / (frames[i + 3/*ENTRIES*/] - before);
+				x += (frames[i + 3/*ENTRIES*/ + 1/*VALUE1*/] - x) * t;
+				y += (frames[i + 3/*ENTRIES*/ + 2/*VALUE2*/] - y) * t;
 				break;
-			case STEPPED:
-				x = frames[i + CurveTimeline2.VALUE1];
-				y = frames[i + CurveTimeline2.VALUE2];
+			case 1/*STEPPED*/:
+				x = frames[i + 1/*VALUE1*/];
+				y = frames[i + 2/*VALUE2*/];
 				break;
 			default:
-				x = this.getBezierValue(time, i, CurveTimeline2.VALUE1, curveType - BEZIER);
-				y = this.getBezierValue(time, i, CurveTimeline2.VALUE2, curveType + BEZIER_SIZE - BEZIER);
+				x = this.getBezierValue(time, i, 1/*VALUE1*/, curveType - 2/*BEZIER*/);
+				y = this.getBezierValue(time, i, 2/*VALUE2*/, curveType + 18/*BEZIER_SIZE*/ - 2/*BEZIER*/);
 			}
 
 			switch (blend) {
@@ -953,9 +944,6 @@ module spine {
 
 	/** Changes a slot's {@link Slot#color}. */
 	export class RGBATimeline extends CurveTimeline implements SlotTimeline {
-		static ENTRIES = 5;
-		static R = 1; static G = 2; static B = 3; static A = 4;
-
 		slotIndex = 0;
 
 		constructor (frameCount: number, bezierCount: number, slotIndex: number) {
@@ -967,17 +955,17 @@ module spine {
 		}
 
 		getFrameEntries () {
-			return RGBATimeline.ENTRIES;
+			return 5/*ENTRIES*/;
 		}
 
 		/** Sets the time in seconds, red, green, blue, and alpha for the specified key frame. */
 		setFrame (frame: number, time: number, r: number, g: number, b: number, a: number) {
-			frame *= RGBATimeline.ENTRIES;
+			frame *= 5/*ENTRIES*/;
 			this.frames[frame] = time;
-			this.frames[frame + RGBATimeline.R] = r;
-			this.frames[frame + RGBATimeline.G] = g;
-			this.frames[frame + RGBATimeline.B] = b;
-			this.frames[frame + RGBATimeline.A] = a;
+			this.frames[frame + 1/*R*/] = r;
+			this.frames[frame + 2/*G*/] = g;
+			this.frames[frame + 3/*B*/] = b;
+			this.frames[frame + 4/*A*/] = a;
 		}
 
 		apply (skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection) {
@@ -1000,32 +988,32 @@ module spine {
 			}
 
 			let r = 0, g = 0, b = 0, a = 0;
-			let i = Timeline.search2(frames, time, RGBATimeline.ENTRIES);
-			let curveType = this.curves[i / RGBATimeline.ENTRIES];
+			let i = Timeline.search2(frames, time, 5/*ENTRIES*/);
+			let curveType = this.curves[i / 5/*ENTRIES*/];
 			switch (curveType) {
-			case LINEAR:
+			case 0/*LINEAR*/:
 				let before = frames[i];
-				r = frames[i + RGBATimeline.R];
-				g = frames[i + RGBATimeline.G];
-				b = frames[i + RGBATimeline.B];
-				a = frames[i + RGBATimeline.A];
-				let t = (time - before) / (frames[i + RGBATimeline.ENTRIES] - before);
-				r += (frames[i + RGBATimeline.ENTRIES + RGBATimeline.R] - r) * t;
-				g += (frames[i + RGBATimeline.ENTRIES + RGBATimeline.G] - g) * t;
-				b += (frames[i + RGBATimeline.ENTRIES + RGBATimeline.B] - b) * t;
-				a += (frames[i + RGBATimeline.ENTRIES + RGBATimeline.A] - a) * t;
+				r = frames[i + 1/*R*/];
+				g = frames[i + 2/*G*/];
+				b = frames[i + 3/*B*/];
+				a = frames[i + 4/*A*/];
+				let t = (time - before) / (frames[i + 5/*ENTRIES*/] - before);
+				r += (frames[i + 5/*ENTRIES*/ + 1/*R*/] - r) * t;
+				g += (frames[i + 5/*ENTRIES*/ + 2/*G*/] - g) * t;
+				b += (frames[i + 5/*ENTRIES*/ + 3/*B*/] - b) * t;
+				a += (frames[i + 5/*ENTRIES*/ + 4/*A*/] - a) * t;
 				break;
-			case STEPPED:
-				r = frames[i + RGBATimeline.R];
-				g = frames[i + RGBATimeline.G];
-				b = frames[i + RGBATimeline.B];
-				a = frames[i + RGBATimeline.A];
+			case 1/*STEPPED*/:
+				r = frames[i + 1/*R*/];
+				g = frames[i + 2/*G*/];
+				b = frames[i + 3/*B*/];
+				a = frames[i + 4/*A*/];
 				break;
 			default:
-				r = this.getBezierValue(time, i, RGBATimeline.R, curveType - BEZIER);
-				g = this.getBezierValue(time, i, RGBATimeline.G, curveType + BEZIER_SIZE - BEZIER);
-				b = this.getBezierValue(time, i, RGBATimeline.B, curveType + BEZIER_SIZE * 2 - BEZIER);
-				a = this.getBezierValue(time, i, RGBATimeline.A, curveType + BEZIER_SIZE * 3 - BEZIER);
+				r = this.getBezierValue(time, i, 1/*R*/, curveType - 2/*BEZIER*/);
+				g = this.getBezierValue(time, i, 2/*G*/, curveType + 18/*BEZIER_SIZE*/ - 2/*BEZIER*/);
+				b = this.getBezierValue(time, i, 3/*B*/, curveType + 18/*BEZIER_SIZE*/ * 2 - 2/*BEZIER*/);
+				a = this.getBezierValue(time, i, 4/*A*/, curveType + 18/*BEZIER_SIZE*/ * 3 - 2/*BEZIER*/);
 			}
 			if (alpha == 1)
 				color.set(r, g, b, a);
@@ -1038,9 +1026,6 @@ module spine {
 
 	/** Changes a slot's {@link Slot#color}. */
 	export class RGBTimeline extends CurveTimeline implements SlotTimeline {
-		static ENTRIES = 4;
-		static R = 1; static G = 2; static B = 3;
-
 		slotIndex = 0;
 
 		constructor (frameCount: number, bezierCount: number, slotIndex: number) {
@@ -1051,16 +1036,16 @@ module spine {
 		}
 
 		getFrameEntries () {
-			return RGBTimeline.ENTRIES;
+			return 4/*ENTRIES*/;
 		}
 
 		/** Sets the time in seconds, red, green, blue, and alpha for the specified key frame. */
 		setFrame (frame: number, time: number, r: number, g: number, b: number) {
 			frame <<= 2;
 			this.frames[frame] = time;
-			this.frames[frame + RGBTimeline.R] = r;
-			this.frames[frame + RGBTimeline.G] = g;
-			this.frames[frame + RGBTimeline.B] = b;
+			this.frames[frame + 1/*R*/] = r;
+			this.frames[frame + 2/*G*/] = g;
+			this.frames[frame + 3/*B*/] = b;
 		}
 
 		apply (skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection) {
@@ -1086,28 +1071,28 @@ module spine {
 			}
 
 			let r = 0, g = 0, b = 0;
-			let i = Timeline.search2(frames, time, RGBTimeline.ENTRIES);
+			let i = Timeline.search2(frames, time, 4/*ENTRIES*/);
 			let curveType = this.curves[i >> 2];
 			switch (curveType) {
-			case LINEAR:
+			case 0/*LINEAR*/:
 				let before = frames[i];
-				r = frames[i + RGBTimeline.R];
-				g = frames[i + RGBTimeline.G];
-				b = frames[i + RGBTimeline.B];
-				let t = (time - before) / (frames[i + RGBTimeline.ENTRIES] - before);
-				r += (frames[i + RGBTimeline.ENTRIES + RGBTimeline.R] - r) * t;
-				g += (frames[i + RGBTimeline.ENTRIES + RGBTimeline.G] - g) * t;
-				b += (frames[i + RGBTimeline.ENTRIES + RGBTimeline.B] - b) * t;
+				r = frames[i + 1/*R*/];
+				g = frames[i + 2/*G*/];
+				b = frames[i + 3/*B*/];
+				let t = (time - before) / (frames[i + 4/*ENTRIES*/] - before);
+				r += (frames[i + 4/*ENTRIES*/ + 1/*R*/] - r) * t;
+				g += (frames[i + 4/*ENTRIES*/ + 2/*G*/] - g) * t;
+				b += (frames[i + 4/*ENTRIES*/ + 3/*B*/] - b) * t;
 				break;
-			case STEPPED:
-				r = frames[i + RGBTimeline.R];
-				g = frames[i + RGBTimeline.G];
-				b = frames[i + RGBTimeline.B];
+			case 1/*STEPPED*/:
+				r = frames[i + 1/*R*/];
+				g = frames[i + 2/*G*/];
+				b = frames[i + 3/*B*/];
 				break;
 			default:
-				r = this.getBezierValue(time, i, RGBTimeline.R, curveType - BEZIER);
-				g = this.getBezierValue(time, i, RGBTimeline.G, curveType + BEZIER_SIZE - BEZIER);
-				b = this.getBezierValue(time, i, RGBTimeline.B, curveType + BEZIER_SIZE * 2 - BEZIER);
+				r = this.getBezierValue(time, i, 1/*R*/, curveType - 2/*BEZIER*/);
+				g = this.getBezierValue(time, i, 2/*G*/, curveType + 18/*BEZIER_SIZE*/ - 2/*BEZIER*/);
+				b = this.getBezierValue(time, i, 3/*B*/, curveType + 18/*BEZIER_SIZE*/ * 2 - 2/*BEZIER*/);
 			}
 			if (alpha == 1) {
 				color.r = r;
@@ -1167,9 +1152,6 @@ module spine {
 
 	/** Changes a slot's {@link Slot#color} and {@link Slot#darkColor} for two color tinting. */
 	export class RGBA2Timeline extends CurveTimeline implements SlotTimeline{
-		static ENTRIES = 8;
-		static R = 1; static G = 2; static B = 3; static A = 4; static R2 = 5; static G2 = 6; static B2 = 7;
-
 		slotIndex = 0;
 
 		constructor (frameCount: number, bezierCount: number, slotIndex: number) {
@@ -1182,20 +1164,20 @@ module spine {
 		}
 
 		getFrameEntries () {
-			return RGBA2Timeline.ENTRIES;
+			return 8/*ENTRIES*/;
 		}
 
 		/** Sets the time in seconds, light, and dark colors for the specified key frame. */
 		setFrame (frame: number, time: number, r: number, g: number, b: number, a: number, r2: number, g2: number, b2: number) {
 			frame <<= 3;
 			this.frames[frame] = time;
-			this.frames[frame + RGBA2Timeline.R] = r;
-			this.frames[frame + RGBA2Timeline.G] = g;
-			this.frames[frame + RGBA2Timeline.B] = b;
-			this.frames[frame + RGBA2Timeline.A] = a;
-			this.frames[frame + RGBA2Timeline.R2] = r2;
-			this.frames[frame + RGBA2Timeline.G2] = g2;
-			this.frames[frame + RGBA2Timeline.B2] = b2;
+			this.frames[frame + 1/*R*/] = r;
+			this.frames[frame + 2/*G*/] = g;
+			this.frames[frame + 3/*B*/] = b;
+			this.frames[frame + 4/*A*/] = a;
+			this.frames[frame + 5/*R2*/] = r2;
+			this.frames[frame + 6/*G2*/] = g2;
+			this.frames[frame + 7/*B2*/] = b2;
 		}
 
 		apply (skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection) {
@@ -1224,44 +1206,44 @@ module spine {
 			}
 
 			let r = 0, g = 0, b = 0, a = 0, r2 = 0, g2 = 0, b2 = 0;
-			let i = Timeline.search2(frames, time, RGBA2Timeline.ENTRIES);
+			let i = Timeline.search2(frames, time, 8/*ENTRIES*/);
 			let curveType = this.curves[i >> 3];
 			switch (curveType) {
-			case LINEAR:
+			case 0/*LINEAR*/:
 				let before = frames[i];
-				r = frames[i + RGBA2Timeline.R];
-				g = frames[i + RGBA2Timeline.G];
-				b = frames[i + RGBA2Timeline.B];
-				a = frames[i + RGBA2Timeline.A];
-				r2 = frames[i + RGBA2Timeline.R2];
-				g2 = frames[i + RGBA2Timeline.G2];
-				b2 = frames[i + RGBA2Timeline.B2];
-				let t = (time - before) / (frames[i + RGBA2Timeline.ENTRIES] - before);
-				r += (frames[i + RGBA2Timeline.ENTRIES + RGBA2Timeline.R] - r) * t;
-				g += (frames[i + RGBA2Timeline.ENTRIES + RGBA2Timeline.G] - g) * t;
-				b += (frames[i + RGBA2Timeline.ENTRIES + RGBA2Timeline.B] - b) * t;
-				a += (frames[i + RGBA2Timeline.ENTRIES + RGBA2Timeline.A] - a) * t;
-				r2 += (frames[i + RGBA2Timeline.ENTRIES + RGBA2Timeline.R2] - r2) * t;
-				g2 += (frames[i + RGBA2Timeline.ENTRIES + RGBA2Timeline.G2] - g2) * t;
-				b2 += (frames[i + RGBA2Timeline.ENTRIES + RGBA2Timeline.B2] - b2) * t;
+				r = frames[i + 1/*R*/];
+				g = frames[i + 2/*G*/];
+				b = frames[i + 3/*B*/];
+				a = frames[i + 4/*A*/];
+				r2 = frames[i + 5/*R2*/];
+				g2 = frames[i + 6/*G2*/];
+				b2 = frames[i + 7/*B2*/];
+				let t = (time - before) / (frames[i + 8/*ENTRIES*/] - before);
+				r += (frames[i + 8/*ENTRIES*/ + 1/*R*/] - r) * t;
+				g += (frames[i + 8/*ENTRIES*/ + 2/*G*/] - g) * t;
+				b += (frames[i + 8/*ENTRIES*/ + 3/*B*/] - b) * t;
+				a += (frames[i + 8/*ENTRIES*/ + 4/*A*/] - a) * t;
+				r2 += (frames[i + 8/*ENTRIES*/ + 5/*R2*/] - r2) * t;
+				g2 += (frames[i + 8/*ENTRIES*/ + 6/*G2*/] - g2) * t;
+				b2 += (frames[i + 8/*ENTRIES*/ + 7/*B2*/] - b2) * t;
 				break;
-			case STEPPED:
-				r = frames[i + RGBA2Timeline.R];
-				g = frames[i + RGBA2Timeline.G];
-				b = frames[i + RGBA2Timeline.B];
-				a = frames[i + RGBA2Timeline.A];
-				r2 = frames[i + RGBA2Timeline.R2];
-				g2 = frames[i + RGBA2Timeline.G2];
-				b2 = frames[i + RGBA2Timeline.B2];
+			case 1/*STEPPED*/:
+				r = frames[i + 1/*R*/];
+				g = frames[i + 2/*G*/];
+				b = frames[i + 3/*B*/];
+				a = frames[i + 4/*A*/];
+				r2 = frames[i + 5/*R2*/];
+				g2 = frames[i + 6/*G2*/];
+				b2 = frames[i + 7/*B2*/];
 				break;
 			default:
-				r = this.getBezierValue(time, i, RGBA2Timeline.R, curveType - BEZIER);
-				g = this.getBezierValue(time, i, RGBA2Timeline.G, curveType + BEZIER_SIZE - BEZIER);
-				b = this.getBezierValue(time, i, RGBA2Timeline.B, curveType + BEZIER_SIZE * 2 - BEZIER);
-				a = this.getBezierValue(time, i, RGBA2Timeline.A, curveType + BEZIER_SIZE * 3 - BEZIER);
-				r2 = this.getBezierValue(time, i, RGBA2Timeline.R2, curveType + BEZIER_SIZE * 4 - BEZIER);
-				g2 = this.getBezierValue(time, i, RGBA2Timeline.G2, curveType + BEZIER_SIZE * 5 - BEZIER);
-				b2 = this.getBezierValue(time, i, RGBA2Timeline.B2, curveType + BEZIER_SIZE * 6 - BEZIER);
+				r = this.getBezierValue(time, i, 1/*R*/, curveType - 2/*BEZIER*/);
+				g = this.getBezierValue(time, i, 2/*G*/, curveType + 18/*BEZIER_SIZE*/ - 2/*BEZIER*/);
+				b = this.getBezierValue(time, i, 3/*B*/, curveType + 18/*BEZIER_SIZE*/ * 2 - 2/*BEZIER*/);
+				a = this.getBezierValue(time, i, 4/*A*/, curveType + 18/*BEZIER_SIZE*/ * 3 - 2/*BEZIER*/);
+				r2 = this.getBezierValue(time, i, 5/*R2*/, curveType + 18/*BEZIER_SIZE*/ * 4 - 2/*BEZIER*/);
+				g2 = this.getBezierValue(time, i, 6/*G2*/, curveType + 18/*BEZIER_SIZE*/ * 5 - 2/*BEZIER*/);
+				b2 = this.getBezierValue(time, i, 7/*B2*/, curveType + 18/*BEZIER_SIZE*/ * 6 - 2/*BEZIER*/);
 			}
 
 			if (alpha == 1) {
@@ -1284,9 +1266,6 @@ module spine {
 
 	/** Changes a slot's {@link Slot#color} and {@link Slot#darkColor} for two color tinting. */
 	export class RGB2Timeline extends CurveTimeline implements SlotTimeline{
-		static ENTRIES = 7;
-		static R = 1; static G = 2; static B = 3; static R2 = 4; static G2 = 5; static B2 = 6;
-
 		slotIndex = 0;
 
 		constructor (frameCount: number, bezierCount: number, slotIndex: number) {
@@ -1298,19 +1277,19 @@ module spine {
 		}
 
 		getFrameEntries () {
-			return RGB2Timeline.ENTRIES;
+			return 7/*ENTRIES*/;
 		}
 
 		/** Sets the time in seconds, light, and dark colors for the specified key frame. */
 		setFrame (frame: number, time: number, r: number, g: number, b: number, r2: number, g2: number, b2: number) {
-			frame *= RGB2Timeline.ENTRIES;
+			frame *= 7/*ENTRIES*/;
 			this.frames[frame] = time;
-			this.frames[frame + RGB2Timeline.R] = r;
-			this.frames[frame + RGB2Timeline.G] = g;
-			this.frames[frame + RGB2Timeline.B] = b;
-			this.frames[frame + RGB2Timeline.R2] = r2;
-			this.frames[frame + RGB2Timeline.G2] = g2;
-			this.frames[frame + RGB2Timeline.B2] = b2;
+			this.frames[frame + 1/*R*/] = r;
+			this.frames[frame + 2/*G*/] = g;
+			this.frames[frame + 3/*B*/] = b;
+			this.frames[frame + 4/*R2*/] = r2;
+			this.frames[frame + 5/*G2*/] = g2;
+			this.frames[frame + 6/*B2*/] = b2;
 		}
 
 		apply (skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection) {
@@ -1342,40 +1321,40 @@ module spine {
 			}
 
 			let r = 0, g = 0, b = 0, a = 0, r2 = 0, g2 = 0, b2 = 0;
-			let i = Timeline.search2(frames, time, RGB2Timeline.ENTRIES);
-			let curveType = this.curves[i / RGB2Timeline.ENTRIES];
+			let i = Timeline.search2(frames, time, 7/*ENTRIES*/);
+			let curveType = this.curves[i / 7/*ENTRIES*/];
 			switch (curveType) {
-			case LINEAR:
+			case 0/*LINEAR*/:
 				let before = frames[i];
-				r = frames[i + RGB2Timeline.R];
-				g = frames[i + RGB2Timeline.G];
-				b = frames[i + RGB2Timeline.B];
-				r2 = frames[i + RGB2Timeline.R2];
-				g2 = frames[i + RGB2Timeline.G2];
-				b2 = frames[i + RGB2Timeline.B2];
-				let t = (time - before) / (frames[i + RGB2Timeline.ENTRIES] - before);
-				r += (frames[i + RGB2Timeline.ENTRIES + RGB2Timeline.R] - r) * t;
-				g += (frames[i + RGB2Timeline.ENTRIES + RGB2Timeline.G] - g) * t;
-				b += (frames[i + RGB2Timeline.ENTRIES + RGB2Timeline.B] - b) * t;
-				r2 += (frames[i + RGB2Timeline.ENTRIES + RGB2Timeline.R2] - r2) * t;
-				g2 += (frames[i + RGB2Timeline.ENTRIES + RGB2Timeline.G2] - g2) * t;
-				b2 += (frames[i + RGB2Timeline.ENTRIES + RGB2Timeline.B2] - b2) * t;
+				r = frames[i + 1/*R*/];
+				g = frames[i + 2/*G*/];
+				b = frames[i + 3/*B*/];
+				r2 = frames[i + 4/*R2*/];
+				g2 = frames[i + 5/*G2*/];
+				b2 = frames[i + 6/*B2*/];
+				let t = (time - before) / (frames[i + 7/*ENTRIES*/] - before);
+				r += (frames[i + 7/*ENTRIES*/ + 1/*R*/] - r) * t;
+				g += (frames[i + 7/*ENTRIES*/ + 2/*G*/] - g) * t;
+				b += (frames[i + 7/*ENTRIES*/ + 3/*B*/] - b) * t;
+				r2 += (frames[i + 7/*ENTRIES*/ + 4/*R2*/] - r2) * t;
+				g2 += (frames[i + 7/*ENTRIES*/ + 5/*G2*/] - g2) * t;
+				b2 += (frames[i + 7/*ENTRIES*/ + 6/*B2*/] - b2) * t;
 				break;
-			case STEPPED:
-				r = frames[i + RGB2Timeline.R];
-				g = frames[i + RGB2Timeline.G];
-				b = frames[i + RGB2Timeline.B];
-				r2 = frames[i + RGB2Timeline.R2];
-				g2 = frames[i + RGB2Timeline.G2];
-				b2 = frames[i + RGB2Timeline.B2];
+			case 1/*STEPPED*/:
+				r = frames[i + 1/*R*/];
+				g = frames[i + 2/*G*/];
+				b = frames[i + 3/*B*/];
+				r2 = frames[i + 4/*R2*/];
+				g2 = frames[i + 5/*G2*/];
+				b2 = frames[i + 6/*B2*/];
 				break;
 			default:
-				r = this.getBezierValue(time, i, RGB2Timeline.R, curveType - BEZIER);
-				g = this.getBezierValue(time, i, RGB2Timeline.G, curveType + BEZIER_SIZE - BEZIER);
-				b = this.getBezierValue(time, i, RGB2Timeline.B, curveType + BEZIER_SIZE * 2 - BEZIER);
-				r2 = this.getBezierValue(time, i, RGB2Timeline.R2, curveType + BEZIER_SIZE * 3 - BEZIER);
-				g2 = this.getBezierValue(time, i, RGB2Timeline.G2, curveType + BEZIER_SIZE * 4 - BEZIER);
-				b2 = this.getBezierValue(time, i, RGB2Timeline.B2, curveType + BEZIER_SIZE * 5 - BEZIER);
+				r = this.getBezierValue(time, i, 1/*R*/, curveType - 2/*BEZIER*/);
+				g = this.getBezierValue(time, i, 2/*G*/, curveType + 18/*BEZIER_SIZE*/ - 2/*BEZIER*/);
+				b = this.getBezierValue(time, i, 3/*B*/, curveType + 18/*BEZIER_SIZE*/ * 2 - 2/*BEZIER*/);
+				r2 = this.getBezierValue(time, i, 4/*R2*/, curveType + 18/*BEZIER_SIZE*/ * 3 - 2/*BEZIER*/);
+				g2 = this.getBezierValue(time, i, 5/*G2*/, curveType + 18/*BEZIER_SIZE*/ * 4 - 2/*BEZIER*/);
+				b2 = this.getBezierValue(time, i, 6/*B2*/, curveType + 18/*BEZIER_SIZE*/ * 5 - 2/*BEZIER*/);
 			}
 
 			if (alpha == 1) {
@@ -1487,14 +1466,14 @@ module spine {
 		setBezier (bezier: number, frame: number, value: number, time1: number, value1: number, cx1: number, cy1: number, cx2: number,
 			cy2: number, time2: number, value2: number) {
 			let curves = this.curves;
-			let i = this.getFrameCount() + bezier * BEZIER_SIZE;
-			if (value == 0) curves[frame] = BEZIER + i;
+			let i = this.getFrameCount() + bezier * 18/*BEZIER_SIZE*/;
+			if (value == 0) curves[frame] = 2/*BEZIER*/ + i;
 			let tmpx = (time1 - cx1 * 2 + cx2) * 0.03, tmpy = cy2 * 0.03 - cy1 * 0.06;
 			let dddx = ((cx1 - cx2) * 3 - time1 + time2) * 0.006, dddy = (cy1 - cy2 + 0.33333333) * 0.018;
 			let ddx = tmpx * 2 + dddx, ddy = tmpy * 2 + dddy;
 			let dx = (cx1 - time1) * 0.3 + tmpx + dddx * 0.16666667, dy = cy1 * 0.3 + tmpy + dddy * 0.16666667;
 			let x = time1 + dx, y = dy;
-			for (let n = i + BEZIER_SIZE; i < n; i += 2) {
+			for (let n = i + 18/*BEZIER_SIZE*/; i < n; i += 2) {
 				curves[i] = x;
 				curves[i + 1] = y;
 				dx += ddx;
@@ -1510,18 +1489,18 @@ module spine {
 			let curves = this.curves;
 			let i = curves[frame];
 			switch (i) {
-			case LINEAR:
+			case 0/*LINEAR*/:
 				let x = this.frames[frame];
 				return (time - x) / (this.frames[frame + this.getFrameEntries()] - x);
-			case STEPPED:
+			case 1/*STEPPED*/:
 				return 0;
 			}
-			i -= BEZIER;
+			i -= 2/*BEZIER*/;
 			if (curves[i] > time) {
 				let x = this.frames[frame];
 				return curves[i + 1] * (time - x) / (curves[i] - x);
 			}
-			let n = i + BEZIER_SIZE;
+			let n = i + 18/*BEZIER_SIZE*/;
 			for (i += 2; i < n; i += 2) {
 				if (curves[i] >= time) {
 					let x = curves[i - 2], y = curves[i - 1];
@@ -1810,9 +1789,6 @@ module spine {
 	/** Changes an IK constraint's {@link IkConstraint#mix}, {@link IkConstraint#softness},
 	 * {@link IkConstraint#bendDirection}, {@link IkConstraint#stretch}, and {@link IkConstraint#compress}. */
 	export class IkConstraintTimeline extends CurveTimeline {
-		static ENTRIES = 6;
-		static MIX = 1; static SOFTNESS = 2; static BEND_DIRECTION = 3; static COMPRESS = 4; static STRETCH = 5;
-
 		/** The index of the IK constraint slot in {@link Skeleton#ikConstraints} that will be changed. */
 		ikConstraintIndex: number;
 
@@ -1824,18 +1800,18 @@ module spine {
 		}
 
 		getFrameEntries () {
-			return IkConstraintTimeline.ENTRIES;
+			return 6/*ENTRIES*/;
 		}
 
 		/** Sets the time in seconds, mix, softness, bend direction, compress, and stretch for the specified key frame. */
 		setFrame (frame: number, time: number, mix: number, softness: number, bendDirection: number, compress: boolean, stretch: boolean) {
-			frame *= IkConstraintTimeline.ENTRIES;
+			frame *= 6/*ENTRIES*/;
 			this.frames[frame] = time;
-			this.frames[frame + IkConstraintTimeline.MIX] = mix;
-			this.frames[frame + IkConstraintTimeline.SOFTNESS] = softness;
-			this.frames[frame + IkConstraintTimeline.BEND_DIRECTION] = bendDirection;
-			this.frames[frame + IkConstraintTimeline.COMPRESS] = compress ? 1 : 0;
-			this.frames[frame + IkConstraintTimeline.STRETCH] = stretch ? 1 : 0;
+			this.frames[frame + 1/*MIX*/] = mix;
+			this.frames[frame + 2/*SOFTNESS*/] = softness;
+			this.frames[frame + 3/*BEND_DIRECTION*/] = bendDirection;
+			this.frames[frame + 4/*COMPRESS*/] = compress ? 1 : 0;
+			this.frames[frame + 5/*STRETCH*/] = stretch ? 1 : 0;
 		}
 
 		apply (skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection) {
@@ -1863,24 +1839,24 @@ module spine {
 			}
 
 			let mix = 0, softness = 0;
-			let i = Timeline.search2(frames, time, IkConstraintTimeline.ENTRIES)
-			let curveType = this.curves[i / IkConstraintTimeline.ENTRIES];
+			let i = Timeline.search2(frames, time, 6/*ENTRIES*/)
+			let curveType = this.curves[i / 6/*ENTRIES*/];
 			switch (curveType) {
-			case LINEAR:
+			case 0/*LINEAR*/:
 				let before = frames[i];
-				mix = frames[i + IkConstraintTimeline.MIX];
-				softness = frames[i + IkConstraintTimeline.SOFTNESS];
-				let t = (time - before) / (frames[i + IkConstraintTimeline.ENTRIES] - before);
-				mix += (frames[i + IkConstraintTimeline.ENTRIES + IkConstraintTimeline.MIX] - mix) * t;
-				softness += (frames[i + IkConstraintTimeline.ENTRIES + IkConstraintTimeline.SOFTNESS] - softness) * t;
+				mix = frames[i + 1/*MIX*/];
+				softness = frames[i + 2/*SOFTNESS*/];
+				let t = (time - before) / (frames[i + 6/*ENTRIES*/] - before);
+				mix += (frames[i + 6/*ENTRIES*/ + 1/*MIX*/] - mix) * t;
+				softness += (frames[i + 6/*ENTRIES*/ + 2/*SOFTNESS*/] - softness) * t;
 				break;
-			case STEPPED:
-				mix = frames[i + IkConstraintTimeline.MIX];
-				softness = frames[i + IkConstraintTimeline.SOFTNESS];
+			case 1/*STEPPED*/:
+				mix = frames[i + 1/*MIX*/];
+				softness = frames[i + 2/*SOFTNESS*/];
 				break;
 			default:
-				mix = this.getBezierValue(time, i, IkConstraintTimeline.MIX, curveType - BEZIER);
-				softness = this.getBezierValue(time, i, IkConstraintTimeline.SOFTNESS, curveType + BEZIER_SIZE - BEZIER);
+				mix = this.getBezierValue(time, i, 1/*MIX*/, curveType - 2/*BEZIER*/);
+				softness = this.getBezierValue(time, i, 2/*SOFTNESS*/, curveType + 18/*BEZIER_SIZE*/ - 2/*BEZIER*/);
 			}
 
 			if (blend == MixBlend.setup) {
@@ -1892,17 +1868,17 @@ module spine {
 					constraint.compress = constraint.data.compress;
 					constraint.stretch = constraint.data.stretch;
 				} else {
-					constraint.bendDirection = frames[i + IkConstraintTimeline.BEND_DIRECTION];
-					constraint.compress = frames[i + IkConstraintTimeline.COMPRESS] != 0;
-					constraint.stretch = frames[i + IkConstraintTimeline.STRETCH] != 0;
+					constraint.bendDirection = frames[i + 3/*BEND_DIRECTION*/];
+					constraint.compress = frames[i + 4/*COMPRESS*/] != 0;
+					constraint.stretch = frames[i + 5/*STRETCH*/] != 0;
 				}
 			} else {
 				constraint.mix += (mix - constraint.mix) * alpha;
 				constraint.softness += (softness - constraint.softness) * alpha;
 				if (direction == MixDirection.mixIn) {
-					constraint.bendDirection = frames[i + IkConstraintTimeline.BEND_DIRECTION];
-					constraint.compress = frames[i + IkConstraintTimeline.COMPRESS] != 0;
-					constraint.stretch = frames[i + IkConstraintTimeline.STRETCH] != 0;
+					constraint.bendDirection = frames[i + 3/*BEND_DIRECTION*/];
+					constraint.compress = frames[i + 4/*COMPRESS*/] != 0;
+					constraint.stretch = frames[i + 5/*STRETCH*/] != 0;
 				}
 			}
 		}
@@ -1911,9 +1887,6 @@ module spine {
 	/** Changes a transform constraint's {@link TransformConstraint#rotateMix}, {@link TransformConstraint#translateMix},
 	 * {@link TransformConstraint#scaleMix}, and {@link TransformConstraint#shearMix}. */
 	export class TransformConstraintTimeline extends CurveTimeline {
-		static ENTRIES = 7;
-		static ROTATE = 1; static X = 2; static Y = 3; static SCALEX = 4; static SCALEY = 5; static SHEARY = 6;
-
 		/** The index of the transform constraint slot in {@link Skeleton#transformConstraints} that will be changed. */
 		transformConstraintIndex: number;
 
@@ -1925,21 +1898,21 @@ module spine {
 		}
 
 		getFrameEntries () {
-			return TransformConstraintTimeline.ENTRIES;
+			return 7/*ENTRIES*/;
 		}
 
 		/** The time in seconds, rotate mix, translate mix, scale mix, and shear mix for the specified key frame. */
 		setFrame (frame: number, time: number, mixRotate: number, mixX: number, mixY: number, mixScaleX: number, mixScaleY: number,
 			mixShearY: number) {
 			let frames = this.frames;
-			frame *= TransformConstraintTimeline.ENTRIES;
+			frame *= 7/*ENTRIES*/;
 			frames[frame] = time;
-			frames[frame + TransformConstraintTimeline.ROTATE] = mixRotate;
-			frames[frame + TransformConstraintTimeline.X] = mixX;
-			frames[frame + TransformConstraintTimeline.Y] = mixY;
-			frames[frame + TransformConstraintTimeline.SCALEX] = mixScaleX;
-			frames[frame + TransformConstraintTimeline.SCALEY] = mixScaleY;
-			frames[frame + TransformConstraintTimeline.SHEARY] = mixShearY;
+			frames[frame + 1/*ROTATE*/] = mixRotate;
+			frames[frame + 2/*X*/] = mixX;
+			frames[frame + 3/*Y*/] = mixY;
+			frames[frame + 4/*SCALEX*/] = mixScaleX;
+			frames[frame + 5/*SCALEY*/] = mixScaleY;
+			frames[frame + 6/*SHEARY*/] = mixShearY;
 		}
 
 		apply (skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection) {
@@ -1969,47 +1942,41 @@ module spine {
 				return;
 			}
 
-			let X = TransformConstraintTimeline.X, Y = TransformConstraintTimeline.Y;
-			let SCALEX = TransformConstraintTimeline.SCALEX, SCALEY = TransformConstraintTimeline.SCALEY;
-			let SHEARY = TransformConstraintTimeline.SHEARY;
-			let ENTRIES = TransformConstraintTimeline.ENTRIES;
-
 			let rotate, x, y, scaleX, scaleY, shearY;
-			let i = Timeline.search2(frames, time, ENTRIES);
-			let curveType = this.curves[i / ENTRIES];
-			let ROTATE = TransformConstraintTimeline.ROTATE;
+			let i = Timeline.search2(frames, time, 7/*ENTRIES*/);
+			let curveType = this.curves[i / 7/*ENTRIES*/];
 			switch (curveType) {
-			case LINEAR:
+			case 0/*LINEAR*/:
 				let before = frames[i];
-				rotate = frames[i + ROTATE];
-				x = frames[i + X];
-				y = frames[i + Y];
-				scaleX = frames[i + SCALEX];
-				scaleY = frames[i + SCALEY];
-				shearY = frames[i + SHEARY];
-				let t = (time - before) / (frames[i + ENTRIES] - before);
-				rotate += (frames[i + ENTRIES + ROTATE] - rotate) * t;
-				x += (frames[i + ENTRIES + X] - x) * t;
-				y += (frames[i + ENTRIES + Y] - y) * t;
-				scaleX += (frames[i + ENTRIES + SCALEX] - scaleX) * t;
-				scaleY += (frames[i + ENTRIES + SCALEY] - scaleY) * t;
-				shearY += (frames[i + ENTRIES + SHEARY] - shearY) * t;
+				rotate = frames[i + 1/*ROTATE*/];
+				x = frames[i + 2/*X*/];
+				y = frames[i + 3/*Y*/];
+				scaleX = frames[i + 4/*SCALEX*/];
+				scaleY = frames[i + 5/*SCALEY*/];
+				shearY = frames[i + 6/*SHEARY*/];
+				let t = (time - before) / (frames[i + 7/*ENTRIES*/] - before);
+				rotate += (frames[i + 7/*ENTRIES*/ + 1/*ROTATE*/] - rotate) * t;
+				x += (frames[i + 7/*ENTRIES*/ + 2/*X*/] - x) * t;
+				y += (frames[i + 7/*ENTRIES*/ + 3/*Y*/] - y) * t;
+				scaleX += (frames[i + 7/*ENTRIES*/ + 4/*SCALEX*/] - scaleX) * t;
+				scaleY += (frames[i + 7/*ENTRIES*/ + 5/*SCALEY*/] - scaleY) * t;
+				shearY += (frames[i + 7/*ENTRIES*/ + 6/*SHEARY*/] - shearY) * t;
 				break;
-			case STEPPED:
-				rotate = frames[i + ROTATE];
-				x = frames[i + X];
-				y = frames[i + Y];
-				scaleX = frames[i + SCALEX];
-				scaleY = frames[i + SCALEY];
-				shearY = frames[i + SHEARY];
+			case 1/*STEPPED*/:
+				rotate = frames[i + 1/*ROTATE*/];
+				x = frames[i + 2/*X*/];
+				y = frames[i + 3/*Y*/];
+				scaleX = frames[i + 4/*SCALEX*/];
+				scaleY = frames[i + 5/*SCALEY*/];
+				shearY = frames[i + 6/*SHEARY*/];
 				break;
 			default:
-				rotate = this.getBezierValue(time, i, ROTATE, curveType - BEZIER);
-				x = this.getBezierValue(time, i, X, curveType + BEZIER_SIZE - BEZIER);
-				y = this.getBezierValue(time, i, Y, curveType + BEZIER_SIZE * 2 - BEZIER);
-				scaleX = this.getBezierValue(time, i, SCALEX, curveType + BEZIER_SIZE * 3 - BEZIER);
-				scaleY = this.getBezierValue(time, i, SCALEY, curveType + BEZIER_SIZE * 4 - BEZIER);
-				shearY = this.getBezierValue(time, i, SHEARY, curveType + BEZIER_SIZE * 5 - BEZIER);
+				rotate = this.getBezierValue(time, i, 1/*ROTATE*/, curveType - 2/*BEZIER*/);
+				x = this.getBezierValue(time, i, 2/*X*/, curveType + 18/*BEZIER_SIZE*/ - 2/*BEZIER*/);
+				y = this.getBezierValue(time, i, 3/*Y*/, curveType + 18/*BEZIER_SIZE*/ * 2 - 2/*BEZIER*/);
+				scaleX = this.getBezierValue(time, i, 4/*SCALEX*/, curveType + 18/*BEZIER_SIZE*/ * 3 - 2/*BEZIER*/);
+				scaleY = this.getBezierValue(time, i, 5/*SCALEY*/, curveType + 18/*BEZIER_SIZE*/ * 4 - 2/*BEZIER*/);
+				shearY = this.getBezierValue(time, i, 6/*SHEARY*/, curveType + 18/*BEZIER_SIZE*/ * 5 - 2/*BEZIER*/);
 			}
 
 			if (blend == MixBlend.setup) {
@@ -2108,9 +2075,6 @@ module spine {
 	/** Changes a transform constraint's {@link PathConstraint#getMixRotate()}, {@link PathConstraint#getMixX()}, and
 	 * {@link PathConstraint#getMixY()}. */
 	export class PathConstraintMixTimeline extends CurveTimeline {
-		static ENTRIES = 4;
-		static ROTATE = 1; static X = 2; static Y = 3;
-
 		/** The index of the path constraint slot in {@link Skeleton#getPathConstraints()} that will be changed. */
 		pathConstraintIndex = 0;
 
@@ -2122,16 +2086,16 @@ module spine {
 		}
 
 		getFrameEntries () {
-			return PathConstraintMixTimeline.ENTRIES;
+			return 4/*ENTRIES*/;
 		}
 
 		setFrame (frame: number, time: number, mixRotate: number, mixX: number, mixY: number) {
 			let frames = this.frames;
 			frame <<= 2;
 			frames[frame] = time;
-			frames[frame + PathConstraintMixTimeline.ROTATE] = mixRotate;
-			frames[frame + PathConstraintMixTimeline.X] = mixX;
-			frames[frame + PathConstraintMixTimeline.Y] = mixY;
+			frames[frame + 1/*ROTATE*/] = mixRotate;
+			frames[frame + 2/*X*/] = mixX;
+			frames[frame + 3/*Y*/] = mixY;
 		}
 
 		apply (skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection) {
@@ -2155,28 +2119,28 @@ module spine {
 			}
 
 			let rotate, x, y;
-			let i = Timeline.search2(frames, time, PathConstraintMixTimeline.ENTRIES);
+			let i = Timeline.search2(frames, time, 4/*ENTRIES*/);
 			let curveType = this.curves[i >> 2];
 			switch (curveType) {
-			case LINEAR:
+			case 0/*LINEAR*/:
 				let before = frames[i];
-				rotate = frames[i + PathConstraintMixTimeline.ROTATE];
-				x = frames[i + PathConstraintMixTimeline.X];
-				y = frames[i + PathConstraintMixTimeline.Y];
-				let t = (time - before) / (frames[i + PathConstraintMixTimeline.ENTRIES] - before);
-				rotate += (frames[i + PathConstraintMixTimeline.ENTRIES + PathConstraintMixTimeline.ROTATE] - rotate) * t;
-				x += (frames[i + PathConstraintMixTimeline.ENTRIES + PathConstraintMixTimeline.X] - x) * t;
-				y += (frames[i + PathConstraintMixTimeline.ENTRIES + PathConstraintMixTimeline.Y] - y) * t;
+				rotate = frames[i + 1/*ROTATE*/];
+				x = frames[i + 2/*X*/];
+				y = frames[i + 3/*Y*/];
+				let t = (time - before) / (frames[i + 4/*ENTRIES*/] - before);
+				rotate += (frames[i + 4/*ENTRIES*/ + 1/*ROTATE*/] - rotate) * t;
+				x += (frames[i + 4/*ENTRIES*/ + 2/*X*/] - x) * t;
+				y += (frames[i + 4/*ENTRIES*/ + 3/*Y*/] - y) * t;
 				break;
-			case STEPPED:
-				rotate = frames[i + PathConstraintMixTimeline.ROTATE];
-				x = frames[i + PathConstraintMixTimeline.X];
-				y = frames[i + PathConstraintMixTimeline.Y];
+			case 1/*STEPPED*/:
+				rotate = frames[i + 1/*ROTATE*/];
+				x = frames[i + 2/*X*/];
+				y = frames[i + 3/*Y*/];
 				break;
 			default:
-				rotate = this.getBezierValue(time, i, PathConstraintMixTimeline.ROTATE, curveType - BEZIER);
-				x = this.getBezierValue(time, i, PathConstraintMixTimeline.X, curveType + BEZIER_SIZE - BEZIER);
-				y = this.getBezierValue(time, i, PathConstraintMixTimeline.Y, curveType + BEZIER_SIZE * 2 - BEZIER);
+				rotate = this.getBezierValue(time, i, 1/*ROTATE*/, curveType - 2/*BEZIER*/);
+				x = this.getBezierValue(time, i, 2/*X*/, curveType + 18/*BEZIER_SIZE*/ - 2/*BEZIER*/);
+				y = this.getBezierValue(time, i, 3/*Y*/, curveType + 18/*BEZIER_SIZE*/ * 2 - 2/*BEZIER*/);
 			}
 
 			if (blend == MixBlend.setup) {